C++相談室 part28
■ このスレッドは過去ログ倉庫に格納されています
0433デフォルトの名無しさん
NGNGvoid FlagCheck()
{
std::list<SHOOT>::iterator S;
for(S = shoot.begin(); S != shoot.end(); S++)
{
if(T->GetFlag())
{
shoot.erase(T++);
}
else ++T;
}
}
とやっています。
SHOOTは弾が物体にあたったときにflagがtureになるようなクラスです。
一応今は問題なく動いているのですが作るときに色々試した結果たまたま動いただけで
あまり理解ができていません。
shoot.erase(T++)をerase(++T)にしたりshoot.erase(T);T++;にするとエラーになってしまいます。
前者は無論理由はわかるのですが後者の理由がよくわかりません。
上の関数に欠点がないか、それとshoot.erase(T);T++;がエラーになってしまう理由を教えていただけないでしょうか。
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています