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/deletebieten sich Smart Pointer an. In diesem Beispiel einunique_ptr. Oder abhängig von derKlasseBmacht es vielleicht auch Sinn dieKlasseBals normale Membervariable zu haben die anfangs aber eine Art "leeren" Zustand hat und erst durch den Aufruf vonirgendeineFunktionmit Werten gefüllt wird.