@FaulerAffe
-

Почему я не могу получить доступ к элементу unordered_map обходом?

У меня есть класс, в котором одно публичное поле – 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 или типо того?
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
unordered_map<string, button>::const_iterator it_button;
...
it_button->second.hoverReact(m, w); //проблема

Почему second это CONST button? Почему не просто button?

Потому что const_iterator же.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы