【问题标题】:Implementing String class c++实现字符串类 c++
【发布时间】: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[]吗?

标签: c++ string class


【解决方案1】:

正如错误提示的那样,您还没有为[] 运算符编写实现。在 MyString 类中尝试这样的操作:

char& operator[](int index){
    //return character value at given index, perform bounds checking if you like
}

【讨论】:

  • size_t 会更好。
猜你喜欢
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-28
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
  • 2012-10-17
相关资源
最近更新 更多