我宣布了这样的结构 - >
struct data{
int x,y;
bool operator < (const data& other) {
return x<other.x or y<other.y;
}
};
现在我希望将map
作为密钥并使用bool
值。
int main()
{
data a;
map<data,bool>mp;
a.x=12, a.y=24;
mp[a]=true;
}
最后一行给了我这个错误 - &gt;
error: passing 'const' as 'this' argument of 'bool data::operator<(const data&)' discards qualifiers
我该如何解决这个问题?
答案 0 :(得分:11)
std::map<Key, Value>
在内部将它们存储为std::map<const Key, Value>
。这里重要的是Key
是const
。
因此,在您的示例中,data
为const
,但operator<
不是!你不能从const对象调用非const方法,所以编译器会抱怨。
您必须将operator<
指定为const
:
bool operator<(const data& other) const { /*...*/ }
^^^^^