读书人

error 2678 no operator found with

发布时间: 2013-09-28 10:01:20 作者: rapoo

error 2678 no operator found with take a left-hand operand

#include <map>
#include <string>
using namespace std;

struct any {
any() {}
any(int x) {}
};
struct record : map<string, any> {
};
int main() {

record r;
r["aa"] = 123;
const any& a = r["aa"]; // ok

const record& cr = r;
const any& a = cr["aa"]; // error 2678
}

最后一行用到 const 引用,就会出2678错误,请问如何能解决const & 问题。
[解决办法]
这样

const record& cr = r;
auto const iter = cr.find("aa");
if (cr.end() != iter)
{
const any& a = iter->second;
}

map::operator[] 在没有的情况下会自动添加,所以无法与 const 对象连用。

读书人网 >C++

热点推荐