Frage

Ich arbeite gerade an einem sehr einfachen Spiel und ich habe eine std :: Liste Sammlung von Objekten, die zu meinem Spiel betreffen. Ich erklärte es als:

std::list<Target> targets;

Wenn ich über sie iterieren mit

for (std::list<Target>::iterator iter = targets.begin(); iter != targets.end(); iter++) {
        Target t = *iter;
                t.move();
}

Meine Objekte aktualisieren nicht auf der GUI. Um jedoch die iterierenden Schleife mit einem targets.front().move() ersetzen, mein ein Objekt bewegt sich richtig. Ich denke, das liegt daran, dass ich nicht über die Sammlung Zeiger Iterieren. Kann mir jemand erklären, wie das geschehen ist? Danke.

War es hilfreich?

Lösung

Sie die Objekte kopieren, tun es so aus:

*iter.move()

Wenn Sie Target t = *iter; Sie sind im Wesentlichen eine Kopie des Objekts erzeugt und bewegt es, anstatt Ihre beabsichtigte Aufgabe zu bewegen.

Wie xtofl sagte (thx) die Referenz als auch erhalten können.

Target &t = *iter;
t.move();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top