Первый
У меня есть класс Node, который содержит функцию рисования.Узлы содержатся на карте, например:
map<std::string, Node*>
Когда я использую итератор для рисования всех узлов на карте, ничего не происходит.(gc - это графический контекст, который я передаю функции рисования)
std::map<std::string, Node*>::const_iterator itr = _Nodes.begin();
while(itr != _Nodes.end())
{
itr->second->setX(100);
}
Но это не работает.Однако, если я построю свой итератор по-другому, он будет работать.
std::map<std::string, Node*>::const_iterator end = _Nodes.end();
for(std::map<std::string, Node*>::const_iterator it = _Nodes.begin(); it != end; ++it){
it->second->draw(gc);
it->second->setSize(100);
}
Мой вопрос: почему работает один, а не другой?
Второй вопрос: какой альтернативный способ хранить всеузлы в классе NodeManager, не называя их?Простой список?