Jishnu Banerjee Jishnu Banerjee - 1 year ago 66
C++ Question

Why can't I map a structure in C++?

I've declared a structure like this ->

struct data{
int x,y;
bool operator < (const data& other) {
return x<other.x or y<other.y;

Now I want to
it as a key and with a

int main()
data a;
a.x=12, a.y=24;

The last line gives me this error ->

error: passing 'const' as 'this' argument of 'bool data::operator<(const data&)' discards qualifiers

How can I fix this ??

Answer Source

std::map<Key, Value> internally stores them as std::map<const Key, Value>. The important thing here is that the Key is const.

So, in your example, data is const, but operator< is not! You cannot call a non-const method from a const object, so the compiler complains.

You'll have to specify operator< as const:

bool operator<(const data& other) const { /*...*/ }
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download