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 ein unique_ptr . Oder abhängig von der KlasseB macht es vielleicht auch Sinn die KlasseB als normale Membervariable zu haben die anfangs aber eine Art "leeren" Zustand hat und erst durch den Aufruf von irgendeineFunktion mit Werten gefüllt wird.


Log in to reply