【发布时间】:2016-07-11 19:12:51
【问题描述】:
我正在尝试在 C++ 中实现一个字符串类。我试图重载“==”运算符,我不断收到这些错误:
错误 C2676:二进制 '[': 'const MyString' 未定义此运算符或转换为预定义运算符可接受的类型”
和
错误 C2088:'[':类非法
bool operator==(const MyString& str1, const MyString& str2) {
int i;
for (i=0; str1[i] != '\0'; i++){
if (str1[i] != str2[i]) {
return false;
}
}
return true;
}
【问题讨论】:
-
问题是错误所说的。您的类没有实现 [] 运算符,您正在尝试使用它。
-
类的其余部分是如何实现的?您是否重载了
[]运算符? -
您可能应该在包含字符串内容的类成员上使用下标,而不是在类本身上。
-
如果您能收到 更多 条描述性错误消息,我迫不及待地想看看如何。也许您为您的班级定义了
operator[],但忘记提供const版本?或者你根本没有提供。由于您没有提供任何其他详细信息,因此您得到的最好结果就是一个疯狂的猜测。 -
你的班级有
operator[]吗?