Destruktor mit Bedingung
-
Hallo zusammen!
Wie kann ich verhindern dass ein Destruktor einer Klasse aufgerufen wird wenn eine bestimmte Bedinung nicht erfüllt ist???
z.B: so lange bool test = false darf ~klasse() nicht aufgerufen werden.Danke
Sonny
-
Er darf bis dahin den Scope nicht verlassen:
{ // SCOPE START Typ Obj; while(Bedingung) { // do something } } // SCOPE END -> ~Obj();
MfG SideWinder
-
er kann aber auch explizit aufgerufen werden, ich glaube kaum, dass sich das verhindern lässt.
-
so war das nicht gemeint. Ich muss die Klasse implementieren und die soll dann von anderen beutzt werden. Ich muss verhindern können dass der Destruktor ausgeführt werden kann. Das geht eben nicht mit irgendwelchen Schleifen...
-
Denk das mal konkret durch. Was soll denn passieren, wenn jemand den Destruktor aufruft während es "verboten" ist? Wenn du die Frage beantworten kannst, bist du einen Schritt weiter.
-
Gar nicht, wie lange der dein Objekt benützen möchte ist seine Sache, nicht deine!
Was soll denn die Klasse genau machen? Vielleicht lässt sich ja per OS-Funktionen dafür noch eine Critical Section, etc. erstellen.
MfG SideWinder
-
hat sich erledigt... war auf dem falschen Dampfer *schäm*
-
Weiß nicht wie du dir das vorstellst. Und vorallem, welchen Sinn soll es haben?
Der Destruktor wird nunmal dann aufgerufen, wenn das Objekt gelöscht wird. Entweder wenn es den Gültigkeitsbereich verlässt oder mit delete vom User gelöscht wird. Wie willst du das verhindern? Denn die Laufzeitumgebung sorgt dafür... zum Glück.
-
Dafür gibt es doch den Copy Destruktor :p
*duck* und weglauf
Devil