私はC++を学んでいますが、今はイテレータに問題があります。これは私の場合です:私はここにこのコードを持っています。リストのセグメンテーションフォールト<Object*>イテレータ
// std::list<Dragon*> dragons = cave.getDragons();
for (std::list<Dragon*>::iterator it = cave.getDragons().begin(); it != cave.getDragons().end(); it++){
os << std::endl << (*it)->getName();
}
セグメンテーションフォールトを返します。これは私のリストと私のgetDragons()メソッドです:
std::list<Dragon*> dragons;
std::list<Dragon*> getDragons() const {return dragons;}
そして、私の質問は...私はこのようなことをやってセグメンテーションフォールトを持っていないのはなぜ、私はコメントしている、変数ドラゴンを使用する場合は、ドン」 t?ありがとう!
あなたは 'Dragon *'のリストを持っていて、それの先頭までイテレータを作成してから、リストを削除して破棄させます。次に、イテレータと同様の破壊リストと比較します。いずれにせよ、範囲ベースのforループを使用してください(foreachループ: 'for(auto * dragon:cave.getDragons())) – Justin
' getDragons() 'はコピーを返します。多分あなたは参照をしたいですか? –
ありテスターはだし、それは、このコードで動作するように持っている: 'オートそれ= cave-> getDragons())(始まる;それはないテスター –