Aus einer liste löschen
-
Ich habe gerade eine kleine Particlenegine geschrieben und kriege aus irgendeinem einem mir nicht ersichtlichen Grund Fehler beim Ausführen. Es ist eine Simple Liste mit dem Typ
CParticle*als Basisclasse. Der Code sieht in Etwa so aus://Particle.h static std::list<CParticle*> gParticles; //Das static muss da hin da diese Zeile hier in einer Header-Datei ist //Main.cpp gParticles.push_back(new SFireParticle(/*Parameter*/)); //Main.cpp for (std::list<CParticle*>::iterator Iterator = gParticles.begin(); Iterator != gParticles.end();) if (!(*Iterator)->GetAlive()) gParticles.erase(Iterator); else ++Iterator;Das Kompilieren klappt super, aber sobald ich ein Particle spawne, und es dann gelöst wird, kriege ich eine Fehlermeldung die sagt "list iterators incompadible". Wie kann ich das lösen?
Schonmal danke in advance

-
Worauf zeigt Iterator nach erase?
-
Ich hatte zwei code-Abschnitte und in einem stand
Iterator = gParticles.erase(Iterator);Danke für den Hinweis. Habe seit Stunden versucht den Fehler zu finden.
-
WhileTrueDo schrieb:
//Particle.h static std::list<CParticle*> gParticles; //Das static muss da hin da diese Zeile hier in einer Header-Datei istGar nicht gut!
Überlege mal, was passiert wenn du die Headerdatei in zwei verschiedene CPP-Dateien einbindest?!
Globale Variablen solltest du vermeiden - insbesondere wenn es Teil einer Engine sein soll.