.remove とオブジェクトをポインターとして使用して std::list からオブジェクトを削除することは可能ですか?
私はポインターとかなり混乱しています。たとえば、次のクラスがあります。
class AsteroidGen{
public:
std::list<Asteroid*> listAsteroids;
void AsteroidGen::generateAsteroid(int amount, int delet);
void AsteroidGen::DrawAsteroids();
};
これには、私の小惑星オブジェクトへのポインタのリストがあります。これはポインターなので、ポインターを使用してそれを調べて削除できると思います。
私のメイン クラスでは、AsteroidGen のインスタンスを作成し、リストにデータを入力して描画します。これはすべてうまくいきます。次に、弾丸が衝突したリストから項目の 1 つを削除しようとします。
bool CheckBulletCollision(Lazer lazer, AsteroidGen asteroids){
bool collision = false;
for each(Asteroid *c in asteroids.listAsteroids){
Position pos = c->pos;
float lazx = lazer.mPos.x;
float lazy = lazer.mPos.y;
float lazz = lazer.mPos.z;
float distance = sqrt(pow(pos.x - lazx, 2) + pow(pos.y - lazy, 2) + pow(pos.z - lazz, 2));
if( distance < 2.05){
asteroids.listAsteroids.remove(c);
lazergone = true;
break;
}
}
return collision;
}
コードを 1 行ずつ調べて何が問題なのかを確認しようとしましたが、次のフレームでリスト項目が実際に削除されません。私はおそらくポインターを正しく使用していませんが、それでも難しいと思います。
誰かアドバイスをください!さらにコードを追加する必要があるかどうか教えてください。これで十分だと思いました。ありがとうございます。