[英]C++ Operator overloading, my own string class
我试图在c ++ 11中创建自己的字符串类,但是我遇到了一些问题。 比较我的类和std :: string类,我无法弄清楚如何使用
std :: string.at(int)='a'; 方法/过载。
我在自己的类中创建了at(int)方法:
int at(int index)
{
if(index <0 || index > size-1) {throw std::out_of_range("Error, index out of range");}
return data[index];
}
如果我只使用它,它工作得很好:
MyString.at(2);
在主文件中:
MyString = "Hello world!"; //Works fine!
MyString.at(2)='a'; //Gives, Error: expressino must be a modifiable Ivalue.
任何帮助都会很棒,谢谢!
至少有一个at()
成员函数需要返回对char
的非const引用。 像这样:
char &at(std::size_t idx)
{
return data[idx];
}
定义const
版本也是有益的:
const char &at(std::size_t idx) const
{
return data[idx];
}
还要注意使用std::size_t
(这是一个无符号类型,保证足够大以表示任何大小)。 这样可以提高可移植性,而不必检查负指数。
您要返回一个整数,而不是对该字符的引用,您可能需要:
char& at(int index)
当然,您需要返回正确的字符类型,但无论如何您需要返回一个引用,以便调用者能够分配它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.