Hallo Leute,
ich brauche bitte eure Hilfe.
Folgendes Problem bzw. Überlegung:
Ich habe mehrere Klassen: Player, Inventory, Item, Game, Dungeon, Monster usw.
In Game läuft die Game Loop. Außerdem erzeugt Game ein Objekt vom Typ Player.
Player wiederum hat eine Membervariable Inventory(vector) welche beim erzeugen eines Player´s ebenfalls initialisiert wird.
Nun hat ein Game Objekt noch die Möglichkeit ein Objekt vom Typ Dungeon zu erzeugen, in welchem der Player Monster töten muss. Das führt dann wiederum dazu das man im Dungeon Objekte vom Typ Item droppen kann, welche dem Inventory im Player Objekt zugeordnet werden können. Wenn alle Monster im Dungeon tot sind, wird das Dungeon Objekt zerstört und man befindet sich wieder im Game Objekt.
Nun habe ich momentan eine Blockade im Hirn wie ich das mit dem Inventar und den Items realisieren soll. Folgende Probleme habe ich persönlich damit:
1) Wenn das Inventory im Player bspw. ein Vector vom Typ Item ist und ich die Größe von dem Vector nicht beim Initialisieren angebe, werden alle Objekte mit jedem push_back in einen "größeren" Bereich kopiert - der Destructor wird aufgerufen (also muss ich aufpassen was ich im Destructor mache). Sollte Item später als Basisklasse für andere Item Klassen dienen, wäre das aber auch nicht mehr möglich da ich ja dann Pointer benutzen muss um polymorphes Verhalten zu erzeugen oder?
2) Wenn das Inventory im Player bspw. ein Vector vom Typ Item* ist, zeigen alle Pointer auf einen ungültigen Speicherbereich.(Scope im Dungeon in welchem die Item Objekte erzeugt werden, wird verlassen bzw. das Dungeon Objekt wird komplett gekillt wenn alle Monster tot sind).
3) Wenn das Inventory im Player bspw. ein Vector vom Typ Item* ist und ich die Item Objekte im Dungeon mit new erzeuge, bleiben diese zwar auch nach verlassen des Scope´s bzw. des Dungeon Objekts valide (weil auf Heap erzeugt), jedoch muss ich mich dann selbst um das löschen kümmern (Außer ich benutze Smart Pointer??)
Unter der Voraussetzung das ich mein Problem richtig beschreiben konnte folgende Frage:
Was wäre eine valide Möglichkeit die Item Objekte im Player Inventar abzuspeichern, wenn das Inventar durch einen Vector repräsentiert wird?
Vielen Dank!