注册 登录
编程论坛 C++教室

这个为啥不能重载??

怪叔叔 发布于 2014-04-17 20:52, 633 次点击
String& String::operator+=(const String& str)
{
char *ss = new char[_size + strlen(str._string)+1];
strcpy(ss, _string);
strcat(ss, str._string);
_size = strlen(ss);
delete[] _string;
_string = ss;
return *this;
}

String& String::operator+=(const char* ch)
{
if(NULL != ch)
{
char *str = new char[_size + strlen(ch)+1];
strcpy(str, _string);
strcat(str, ch);
_size = strlen(str);
delete[] _string;
_string = str;
}
return *this;
}
一生成解决方案就有如下错误:
1>f:\peixunzuoye\cpludplud_练习\cpp_7\cpp_7\extence.cpp(1499): error C2679: 二进制“=”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)
1>          f:\peixunzuoye\cpludplud_练习\cpp_7\cpp_7\extence.cpp(1320): 可能是“String &String::operator =(const String &)”
1>          f:\peixunzuoye\cpludplud_练习\cpp_7\cpp_7\extence.cpp(1321): 或       “String &String::operator =(const char *)”
1>          尝试匹配参数列表“(String, std::string)”时
========== 全部重新生成: 成功 0 个,失败 1 个,跳过 0 个 ==========

这个括号里面的类型不是不一样吗??为啥会有这个错误??
3 回复
#2
怪叔叔2014-04-17 21:40
调用:
String str1("hello");
String str2(" world");
char *ch = " world";
str1 += str2;//出错
str1 += ch//对着
#3
hubinyes2014-04-17 21:54
尝试匹配参数列表“(String, std::string),,,std::string
#4
怪叔叔2014-04-19 08:45
哎!程序没有错,是自己太粗心了调用时一个写成了小写string
1