Gültigkeitsbereich über Block hinaus
-
Und noch eine Frage an das werte Publikum:
Ich möchte in einer Funktion der Klasse B neue Instanzen der Klasse B erzeugen. Diese sollen aber beim Verlassen der Funktion nicht zerstört werden sondern erhalten bleiben.
Wie mache ich das?mfg Micha
-
wenn ich dich richtig verstanden habe willst du eigenschaften in einer funktion verändert und diese neuen werte mitnehmen?
-
nein, eigentlich nicht.
idee ist:
void B::erzeugeB(){ B neueInstanzVonB = new B; }
Natülich wird jetzt neueInstanzVonB beim Verlassen des Blocks gelöscht. Ich suche aber eine Mgl., neueInstanzVonB darüber hinaus zu erhalten. (und einen Zeiger darauf zu Speichern um neueInstanzVonB nachher ansprechen zu können)
mfg Micha
-
wenn ein objekt nach ablauf einer methode erhalten bleiben soll, muss es auf dem heap angelegt werden und ein zeiger darauf zurückgegeben werden.
keine ahnung, was du machen willst, aber das schlüsselwort heißt: new.
-
B* B::erzeugeB(){ B* neueInstanzVonB = new B; return neueInstanzVonB; }
Aber für sowas such besser mal nach SmartPointer.
-
also ich glaub du meinst etwas wie:
class B { B* pOtherB; void erzeugeB(); }; void B::erzeugeB() { pOtherB = new B; }
das mit "new" angelgte objekt existiert solang bis du es wieder löschst (delete pOtherB;) (nicht vergessen es zu löschen!). der zeiger pOtherB existiert solang wie das objekt B dessen member-variable es ist.