这是我的代码:
#include <iostream>
#include <string.h>
using namespace std;
string& operator+(string & lhs, int & rhs) {
char temp[255];
itoa(rhs,temp,10);
return lhs += temp;
}
int main() {
string text = "test ";
string result = text + 10;
}
结果是:
test.cpp: In function 'int main()':
test.cpp:15:26: error: no match for 'operator+' in 'text + 10'
test.cpp:15:26: note: candidates are:
/.../
应该是test 10
。
答案 0 :(得分:14)
rvalue(10
)无法绑定到非const引用。您需要重写operator+
,以int const &
或int
为参数。
当你在它时,你想要重写它,所以它也不会修改左操作数。 operator +=
应修改其左操作数,但operator +
不应修改。
答案 1 :(得分:3)
您不应该通过引用获取int。只需按价值看待它。你的问题是你试图对文字整数采用非const引用 - 更改文字的含义是什么?
那说你可能会考虑不要创建这样的运营商,因为它很有可能混淆未来的维护者。