坚持执行

时间:2013-07-09 01:47:54

标签: c++ implementation

我必须为

下面的字符串运算符创建一个实现
String operator +=(const String &str); // this is my declaration which is in my header file

目标是返回一个字符串,该字符串是通过附加调用方法的String附加传递的String而形成的。

到目前为止,这是我的代码/实现,但它有错误,我被卡住了。

String::String::operator +=(const String &str)
{
   strcat(contents, str.contents);
   len += str.len;
}

我该如何解决这个问题?这两个错误是第一个'String'和'operator'

这是运算符的错误:声明与“String String :: operator + =(const String& str)”

不兼容

和String的那个;缺少显式类型(假设为“int”)

2 个答案:

答案 0 :(得分:3)

这是你的问题:

String::String::operator +=(const String &str)
      ^^

两个标记的字符应替换为空格,以便您有一个返回类型:

String String::operator +=(const String &str)
{
    //...
}

答案 1 :(得分:1)

您正在修改调用运算符的String。它是一个复合运算符(+=运算符的混合),因此您需要返回对已修改的String的引用:

String& operator +=(const String &str); 

String& String::operator +=(const String &str)
{
    strcat(contents, str.contents);
    len += str.len;
    return *this;
}