Initialisierung von Klassenvariablen (durch Pointer)
-
Ich habe KlasseA und möchte ein Objekt als Klassenvariable dort verwenden, welches ich aber erst zur Laufzeit definiere.
Also ein Objekt der Klasse B soll in der header-Datei der Klasse A deklariert werden, aber erst zur Laufzeit (z.B. wenn eine Fuktion der KlasseA aufgerufen wird) definiert werden.
Gibt es eine sinnvollere Methode als das ganze über den new-Operator zu machen?
Ich würde das so machen:
header-klasseA:
public: KlasseB *ptrZuObjektB; void irgendeineFunktion(); KlasseA::~KlasseA();
und dann in der cpp von Klasse A:
KlasseA::~KlasseA(){ delete ptrZuObjektB; } KlasseA::irgendeineFunktion(){ this->ptrZuObjektB = new KlasseB(irgendwelche Parameter) }
-
Statt dem manuellen
new/delete
bieten sich Smart Pointer an. In diesem Beispiel einunique_ptr
. Oder abhängig von derKlasseB
macht es vielleicht auch Sinn dieKlasseB
als normale Membervariable zu haben die anfangs aber eine Art "leeren" Zustand hat und erst durch den Aufruf vonirgendeineFunktion
mit Werten gefüllt wird.