Problem mit auto_ptr
-
Mir ist gerade auf gefallen, dass wenn ich auto_ptr::reset() aufrufe, zuerst der Konstruktor des neuen Objektes und dann der Destruktor des alten Objektes aufgerufen wird. Meine Klasse erwartet allerdings vor einer neu initialisierung die deinitialisierung ihres Vorgängers. Gibt es andere Versionen von auto_ptr, z.B. in der Boost Library, bei denen das Verhalten andersrum ist?
mfg.
-
Hab gerade mal überprüft: Bei den Boost Variaten ist das Verhalten auch so. Warum eigentlich? Was ergibt das für einen Sinn?
mfg.
-
Geht gar nicht anders:
aptr.reset(new Type());Bevor reset() aufgerufen werden kann müssen alle Parameter vorhanden sein, das heißt "new Type()" wurde abgearbeitet.
Aber du kannst ja eine Kombo aus release() und reset() aufrufen.
MfG SideWinder
-
SideWinder schrieb:
Geht gar nicht anders:
aptr.reset(new Type());Bevor reset() aufgerufen werden kann müssen alle Parameter vorhanden sein, das heißt "new Type()" wurde abgearbeitet.
Aber du kannst ja eine Kombo aus release() und reset() aufrufen.
MfG SideWinder
Stimmt! Ich Trottel. Den Konstroktor rufe ich ja selber auf und nicht die Funktion!!! Möp. Danke!
Ja, ich mach das dann so:
aptr.release(); aptr.reset(new bla);Okay, danke, danke, danke.
mfg.
-
joomoo schrieb:
Ja, ich mach das dann so:
aptr.release(); aptr.reset(new bla);release ruft aber den Destruktor nicht auf.
-
Bashar schrieb:
joomoo schrieb:
Ja, ich mach das dann so:
aptr.release(); aptr.reset(new bla);release ruft aber den Destruktor nicht auf.
Stimmt, hast recht. Dann mach ich es mit:
aptr.reset(0);Danke!
mfg.