【发布时间】:2017-03-18 18:04:21
【问题描述】:
PString& PString::operator+(const PString &p) {
PString ps3;
ps3.rec = this->rec + p.rec;
return ps3;
}
这是我的函数的样子,这是我的 main()
PString ps1("Ovo je neki text");
PString ps2("ovo je neki drugi text");
PString ps3(ps1);
ps1 = ps2;
PString ps4;
ps4 = ps1 + ps2;
cout << ps4 << endl;
这是我收到的错误消息
vezba.cpp:99:29: error: invalid operands of types ‘char*’ and ‘char* const’ to binary ‘operator+’
ps3.rec = this->rec + p.rec;
^
vezba.cpp:98:13: warning: reference to local variable ‘ps3’ returned [-Wreturn-local-addr]
PString ps3;
这是在我的课上:
class PString {
private:
char *rec;
好的,所以我把 operator+ 改成了这个
PString& PString::operator+(const PString &p) {
PString ps4;
std::string(ps4.rec) = std::string(this->rec) + std::string(p.rec);
return ps4;
}
现在我收到警告
vezba.cpp: In member function ‘PString& PString::operator+(const PString&)’:
vezba.cpp:98:13: warning: reference to local variable ‘ps4’ returned [-Wreturn-local-addr]
PString ps4;
什么也没有打印出来
【问题讨论】:
-
我是新来的,您能建议我如何改进吗?
-
PString 是 char* 的 typedef 吗?
-
只是想知道,定义自己的字符串实现有什么意义,为什么不直接使用
std::string?? -
简短回答:char* 不是字符串。了解其中的区别。
标签: c++ overloading