2013-07-09 37 views
-2

我必须进行以下憋屈实施

String operator +=(const String &str); // this is my declaration which is in my header file 

的目标是回到通过附加与字符串的方法被调用传递的字符串形成一个字符串的字符串操作的实现。

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

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

我该如何解决这个问题?两个误差是第一“字符串”和“操作员”

这是操作者错误:声明是“字符串字符串::运算+ =(const的字符串& STR)”

和不相容字符串的一个;显式类型缺失(假设“诠释”)

+3

我与理解开始[strcat](http://en.cppreference.com/w/cpp/string/byte/strcat)的 –

+0

应该是:'String String :: operator + ='? – billz

+0

那么为实现,它说,它需要一个返回类型 – user2557401

回答

1

您正在修改呼叫该运营商的String。它是一个复合经营者(+=运营商的混合),所以你需要返回到String参考被修改:

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

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

这里是你的问题:

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

两个标记字符应该用空格代替,让你有一个返回类型:

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

我想,如果有一个'strcat'没有任何检查或分配的结果字符串,如果它太短的语法错误可以被认为是次要的:) – Jack

+1

你意思*语义*错误。 “strcat”是否是一个处理重新分配的类成员并不明显,所以我没有提及它。这个问题主要是关于被编译器错误弄糊涂了。 – paddy