Ich habe einen Vektor von Klassenobjekten (Aufzählungszeichen) und es funktioniert zum größten Teil. Aber sobald ich versuche, die Kugeln zu löschen, springt es zurück und verursacht dann einen Haltepunkt. "basic game.exe hat einen Haltepunkt ausgelöst." Ich habe versucht, rückwärts und vorwärts zu iterieren, aber es bleibt immer hängen.Löschen von Daten im Vektor über Schleife, die Haltepunkte verursacht
Ich benutze SFML, und die Objekte sind Rechteck mit Positionen, Rotationen und Größen.
for (it = bullets.end(); it != bullets.begin(); it--)
{
it->draw(game);
it->move();
if (it->bullet.getPosition().x > 800)
{
bullets.erase(it);
}
}
Ich bin ein Noob bei der Codierung, wenn Sie also andere Infomation brauchen, versuchen Sie es und stellen Sie es zur Verfügung.
ein Element aus einem 'std :: VECTOR' Löschen wird ungültig alle seine Iteratoren (in diesem Fall' Es ') , undefiniertes Verhalten aufrufen (weil Sie versuchen, 'it-1' im nächsten Schleifenzyklus zu verwenden,' it-> draw (Spiel); // Zugriff auf ungültigen Iterator '). – George
Was aber gültig ist, ist bullets.erase (it--); aber dann musst du deine for-Schleife noch einmal überdenken – UKMonkey
Sogar zuerst 'it-> zeichnen (Spiel);' ist UB (wie 'es' ist 'end()'). – Jarod42