Das mit der Eingabefensterklasse läßt sich realisieren. Genrell kann man nicht dagen, daß man einen mit new erzeugten Pointer da deleten soll,. wo er erzeugt wurde. Generell kann man nur sagen: delete alles, was du irgendwo mit new angelegt hast, -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21)
Das einzige was mir bei "selbst zerstörenden Objkten" Sorge bereitet ist die Gefahr die Klasse ausversehen "von aussen zu löschen". Die Eingabefensterklasse zerstört sich selbst indem es ein quit() funktion hat die beim drücken des Close buttons aufgerufen wird.
void EingabeFenster::quit() { delete this; }
Wenn ich aber ein neues EingabeFenster Object mit new erzeuge.
EingabeFenster* Fenster = new EingabeFenster(); // self-destructing, don't delete!
und dann versuche es zu löschen, was nicht nötig ist, wäre es ein bug. weil nach der selbstzerstörung ja der Pointer Fenster nicht NULL ist!
Wenn das eine Klasse ist, die Du wiederverwenden willst, dann würde ich auch auf solche Dinge wie delete this verzichten. Das Eingabefenster gehört ja irgend jemanden: wenn Eingabefenster::quit aufgerufen wird, sollte diese Methode den Eigentümer darüber informieren, daß es deleted werden möchte. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21)
Flo, Könnte man schon, aber das ist ja gerade der Vorteil von pointern, dass nur dann Speicher angefordert wird wenn ich ihn brauche. Zweiter Vorteil ist, daß ich das Eingabefenster nicht clear() 'en muss.