У меня проблема. У меня есть класс с перегруженным оператором, как это ..
class Foo
{
friend bool operator<(const Foo &a, const Foo &b);
...
};
bool operator<(const Foo &a, const Foo &b)
{
return a.member < b.member;
}
Затем в функции в классе, которая содержит несколько Foos на карте в качестве ключей ...
void Bar::Update()
{
for (FooItr itr = foos.begin(); itr != foos.end();) {
FooItr test = itr++;
if (!test->first.Check()) { // Check() is const
my_map.insert(*test);
foos.remove(test);
}
}
for (MapItr itr = my_map.begin(); itr != my_map.end(); ++itr) {
itr->first.Update(); // Update is not const
}
}
и я получаю сообщение об ошибке вроде ...
error: passing ‘const Foo’ as ‘this’ argument of ‘void Foo::Update()’ discards qualifiers
Я думаю, причина в том, что my_map.insert () вставляет const Foos, но я не знаю, как решить эту проблему.