0

这是我的代码:

#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

4

2 回答 2

14

右值 ( 10) 不能绑定到非常量引用。您需要重写您的operator+以将 anint const &或仅int作为其参数。

当你使用它时,你想重写它,这样它也不会修改左操作数。Anoperator +=应该修改它的左操作数,但 anoperator +不应该。

于 2013-01-14T20:00:49.283 回答
3

你不应该通过引用来获取 int 。只看价值。您的问题是您正在尝试对文字整数进行非常量引用-更改文字的含义是什么?

也就是说,您可能会考虑反对创建这样的运营商,因为它很有可能让未来的维护者感到困惑。

于 2013-01-14T20:01:15.710 回答