私は描画関数を含む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);
}
私の質問は、1つの機能と他の機能ではないのですか?
2番目の質問は、名前を付けずにNodeManagerクラスにすべてのノードを格納する別の方法です。ほんの単純なリスト?
最初の 'while'ループでは' draw'を呼びません。それはタイプミスか実際のエラーですか? – Naveen
アンダースコアの大文字は予約されているので使用しないでください。使用すると、未定義の動作になります。 –