У меня есть класс, в котором одно публичное поле – unordered_map из объектов другого класса, в котором тоже есть публичное поле unordered_map уже из объектов третьего класса. Я хочу обойти все элементы unordered_map, вызывая функцию из первого класса. Я сделал вот такой обход:
unordered_map<string, interfaceBlock>::const_iterator it, it2;
it = interfaceBlockHash.begin();
while (it != interfaceBlockHash.end())
{
unordered_map<string, button>::const_iterator it_button;
it_button = it->second.buttonHash.begin();
while (it_button != it->second.buttonHash.end())
{
it_button->second.hoverReact(m, w); //проблема
it_button++;
}
it++;
}
На отмеченной строке выдаёт ошибку: "'this' argument to member function 'hoverReact' has type 'const button', but function is not marked const". Почему second это CONST button? Почему не просто button? В этом вся проблема. Сделать что-то через указатели тоже не получилось. Если я буду обращаться к этому же объекту вот так прямо из мейна:
a.interfaceBlockHash["first"].buttonHash["second"].hoverReact(m, window);
, то всё отлично работает. В чём может быть проблема? Может я неправильно обхожу эти unordered_map или типо того?