File
这就是我的函数的样子,这是我的main()
PString& PString::operator+(const PString &p) {
PString ps3;
ps3.rec = this->rec + p.rec;
return ps3;
}
这是我得到的错误信息
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;
现在我收到警告
PString& PString::operator+(const PString &p) {
PString ps4;
std::string(ps4.rec) = std::string(this->rec) + std::string(p.rec);
return ps4;
}
并且没有打印出来
答案 0 :(得分:1)
Google it:“operator + const char”...... example
引用dlf:
operator+
的rhs和lhs都是char*s
。没有operator+
的定义需要两个char*
(事实上,该语言不允许您编写一个)。
编辑:您应该使用std::string
...
edit2:肯定吗?它微不足道......
#include <iostream>
#include <string>
int main()
{
std::string ps1("Ovo je neki text");
std::string ps2("ovo je neki drugi text");
std::string ps3(ps1);
ps1 = ps2;
std::string ps4;
ps4 = ps1 + ps2;
std::cout << ps4 << std::endl;
return 0;
}
答案 1 :(得分:0)
使用+
进行字符串连接的最简单方法是使用标准库std::string
。如果您尝试自己实现,则需要为PString类重载+
。内置char * s不允许您将它们与+
连接起来。