【发布时间】:2016-01-23 13:14:32
【问题描述】:
所以我尝试了 [] 的运算符重载,但它不起作用。 我创建了这个类:
class String
{
private:
char* str;
public:
String(char* str) // constructor
{
this->str = str;
}
char* Val() // returns value of this.str
{
return this->str;
}
char & operator [](int index) { return this->str[index]; }
};
我试着像这样使用它
String* str = new String("example");
cout << str[2] << endl;
预期的结果是字母“a”的打印,但它不起作用.. 但是当我像这样创建一个对象时它确实有效:
String str("example");
cout << str[2] << endl;
有什么建议吗?
【问题讨论】:
-
(*str)[2]应该可以工作,str->operator[](2)也应该工作 -
另外请注意,您的 String 类不拥有您在构造函数中传递给它的字符串副本。
标签: c++ overloading operator-keyword