次のようないくつかのオブジェクトをリストに保持しています。
list<CWorm*> wormList;
ワームをこのリストのコンストラクターに入れました。
CWorm::CWorm(list<CWorm*>& list, [...]) {
list.push_back(this);
メイン ループでは、次のようにいくつかのイベントを実行します。
for(itt = wormList.begin(); itt != wormList.end(); itt++) {
if( (*itt) != NULL ) (*itt)->someEventBlabla();
}
ここに私の質問があります: リストからそれらを効果的に削除するにはどうすればよいですか? それらが死ぬと、リストからそれらを「消去」しようとしましたが(変数をチェックした後、メインループで)、参照できないイテレータのエラーが発生していました。そして、それらをリストから「削除」しようとすると(オブジェクト内、メインループによって実行されるイベント内)、次の行にエラーが発生します。
if( (*itt) != NULL ) (*itt)->someEventBlabla();
私は次のようにそれらを削除しようとしました:
wormList.remove(this)
extern として宣言された wormList を使用して、オブジェクト イベントから。
次のオブジェクトのために空白を残して、それらを削除するにはどうすればよいですか??