delete this?
-
Ist es einer Memberfunktion eigentlich erlaubt, ihr Objekt zu löschen, also
void WasAuchImmer::destroy() { delete this; }
-
ja
-
danke
-
-
Kannste mal den Sinn davon nennen ?
Devil
[ Dieser Beitrag wurde am 23.06.2003 um 20:18 Uhr von devil81 editiert. ]
-
Devil: Wenn man keine Ahnung hat, einfach mal den Mund halten.
-
Original erstellt von <CM>:
Devil: Wenn man keine Ahnung hat, einfach mal den Mund halten.sehr Lustig, der MSVC kompilierts zwar, aber beim ausführen hängt sich die Exe auf.
bzw. Die Debug hängt sich auf.
In der Release gehts...Devil
-
in diesem beitrag wurde ein link gepostet. wie wäre es, wenn du dir den erstmal durchliest? es sind da nämlich 3 bedingungen aufgeführt, die erfüllt sein müssen, damit es klappt.
-
Tja, wenn ich den Link öffnen könnte.
Aber mit Mozilla komm ich da leider net drauf...Devil
-
Ist durchaus praktisch, wenn sich Thread-Klassen selbst löschen sollen (asynchron) oder nicht-modale Dialogklassen... und es geht im VC sowohl als Debug als auch Release.
Darfst halt nach dem delete this nicht mehr auf Member zugreifen, die einen this-Zeiger benötigen... also keine Operationen, keine Daten.
-
Jo, ist wirklich ganz niedlich/praktisch.. hab das auch schon für meinen eignen Thread-Wrapper benutzt.
(o:
-junix
-
ich hab das auch mal benutzt für ne fensterklasse. bei WM_DESTROY dann delete this aufrufen. objekt muss natürlich auf dem heap liegen.
-
*amkopfkratz* konnte man das Erstellen auf dem Heap nicht irgendwie erzwingen? protected machen des Konstruktors oder was war das? *grübel*
-junix
-
Original erstellt von junix:
*amkopfkratz* konnte man das Erstellen auf dem Heap nicht irgendwie erzwingen? protected machen des Konstruktors oder was war das? *grübel*
-junixnee, weg damit. private.
und ne static create(...), die new benutzt und nen zeiger gibt.
-
-
Ah, jo, genau (o: danke, Volkard.
-junix
-
Hallo,
oder alternativ einfach den Destruktor private machen. Ist so ein n vs. 1 Ding. Also statt n-Konstruktoren zu verstecken, reicht es auch 1 Destruktor zu verbergenIst natürlich nur ratsam, wenn die Objekte ausschließlich über eine destroy-Methode zerstört werden sollen.
-
@Hume: Wenn die Methode delete this; macht, wird dann keine Destruktor aufgerufen?
-
Original erstellt von HumeSikkins:
Also statt n-Konstruktoren zu verstecken, reicht es auch 1 Destruktor zu verbergenvestecken, verbergen? das wurde mir jetzt nicht klar. ich schug vor, die konstruktoren private zu machen. das war dann wohl verstecken. wie verbirgst du nur einen mit dem gleichen effekt?
edit: ups, verlesen. da steht ja DEstruktor. dann ists klar. kann auch gehen.
[ Dieser Beitrag wurde am 23.06.2003 um 22:34 Uhr von volkard editiert. ]
-
Mir ist grad eingefallen, dass Destruktor privat machen gar kein Problem nicht is.