[C++] std::vector und virtuelle destructoren

  • Ersteller Ersteller Keksdose12
  • Erstellt am Erstellt am
K

Keksdose12

Guest
Hallo,

ich bin gerade dabei ein Tile-Based Spiel mit SFML zu designen.

Für die verschiedenen Items habe ich eine Basisklasse GameObject mit einem virtuellen Destruktor. Ich hab mir nun gedacht ich benutze zur Verwaltung der Items einen std::vector<GameObject> wenn nun allerdings der vector zerstört wird wird nur der destrctor der Superklasse GameObject für die einzelnen Objekt aufgerufen, das liegt daran dass virtuelle Funktionen eines Objekts nicht funktionieren, wenn es als Parameter übergeben wurde, was ja hier vector.push_back(Coin) passiert. mit einem std::unique_ptr<GameObject> funktioniert es auch nicht, da man ihn nicht kopieren kann.

Wie kann ich dieses Problem nun lösen ? Ich brauche einen Vector durch den ich Itterieren kann um alle Objecte zu zeichnen.

Danke
 
Das müsste mit unique_ptr aber funktionieren, ich habe selbst derartigen Code. Du musst beim push_back allerdings beachten, dass du den Zeiger moven musst (std::move).
 
Danke ! std::move funktioniert super, sowas findet man nicht bei google.
 
Zurück