Objekt ruft Funktion auf, welche dieses Objekt löscht - OK?
-
Hi Leute,
Ich hab hier ne Klasse. Es kann sein, dass ihr Inhalt ungültig wird, wenn der User eine bestimmte Aktion ausführt. Dass er ungültig wird, kann aber nur die Klasse selbst rausfinden und zwar, wenn sie einen Member von sich veruscht zu zeichnen. Wenn die Zeichenfunktion nen Fehler zurückgibt, dann ist das gesamte Objekt ungültig und wird nciht mehr gebraucht. Deswegen ruf ich dann eine Funktion des Parentviews auf, der das Objekt dann aus seinem Array löscht und auch das Objekt selbst zerstört. Jetzt wollte ich fragen, ob das überhaupt in Ordnung ist, bzw was dann passiert.Zur Veranschaulichung ein kleines Beispiel:
class MyObject : public BaseObject { MemberOb m_Member; public: void Paint() { if(!m_Member.Paint()) GetParentView()->DeleteObject(this); } } class MyView : public BaseView { public: void DeleteObject(BaseObject *pOb) { m_array.delete(pOb); delete pOb; } }
Also, ist das in Ordnung?
-
sofern das Objekt per new angelegt wurde, kannst du es auch per delete loeschen.
-
Auch aus sich selbst heraus? Ist das 100 % sicher? Ich frage, weil ich danach ja dann auf einem nicht mehr existenten Objekt operiere ... Oder wird das nur zum Problem, wenn ich danach auf Member des Objektes zugreifen will?
-
dEUs schrieb:
Oder wird das nur zum Problem, wenn ich danach auf Member des Objektes zugreifen will?
ja