error C2297: '+=' : illegal, right operand has type 'char *'为什么会出现这个错误,求解啊大神们 5

错误:d:\新建文件夹\msdev98\myprojects\1\7.cpp(31):errorC2297:'+=':illegal,rightoperandhastyp... 错误:
d:\新建文件夹\msdev98\myprojects\1\7.cpp(31) : error C2297: '+=' : illegal, right operand has type 'char *'
d:\新建文件夹\msdev98\myprojects\1\7.cpp(35) : error C2440: 'return' : cannot convert from 'char *' to 'class mystring &'
程序:
#include<iostream>
using namespace std;
class mystring
{ char*str;
public:
mystring(char*p="");
mystring(mystring&my);
~mystring();
mystring&operator+=(mystring&my);
void show();
};
mystring::mystring(char*p)
{ str=new char[strlen(p)+1];
if(str)
strcpy(str,p);
}
mystring::mystring(mystring &my)
{ str=new char[strlen(my.str)+1];
if(str)
strcpy(str,my.str);
}
mystring::~mystring()
{ if(str)
delete []str;
}
mystring&mystring::operator+=(mystring&my)
{ int len=strlen(str)+strlen(my.str)+1;
char*p=new char[len];
if(p)
{ strcpy(p,str);
p+=my.str;
}
delete []str;
str=new char[len];
return p;
}
void mystring::show()
{ cout<<str<<endl;}
int main()
{ mystring a("Abcd"),b("Defgh"),c(a);
a.show();
c.show();
a+=b;
a.show();
return 0;
}
展开
 我来答
Literature95
2017-12-23 · TA获得超过1442个赞
知道小有建树答主
回答量:309
采纳率:72%
帮助的人:80万
展开全部
'+=' 右边跟的操作数或运算对象不允许有字符类型(例如:不允许有* 星号),否则返回值无法把字符(*星号)转变为你定义的字符串类“class mystring &”。也就是说字符与字符串不属于同种数据类型,需要先把星号转变为字符串类型。
追问
如果这样的话return后面返回值就不是p了,那这个地方应该怎么改
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式