destructor aufrufen
-
Hallo
ich habe eine Klasse und initiere ein Objekt davon.
klasse dat1;
Ich muss nun dieses Objekt frei geben, bevor ich das Programm beende.
delete dat1;
funktioniert aber nicht. Ich weiss ... ist eine Grundsatzfrage

hoffe aber daher auf schnelle Antwort

-
Wenn du das Objekt lokal angelegt hast, brauchst du dich überhaupt nicht um das Aufrufen zu kümmern - der Destruktor wird automatisch aufgerufen, sobald es aus dem Scope fällt (d.h. spätestens am Ende der Funktion, in der es untergebracht ist). delete benötigst du nur, wenn du das Objekt per new auf dem Heap angelegt hast.
-
Hallo,
Warum mußt du das tun?
Du könntest natürlich den Destruktor direkt aufrufen. Besser wäre es aber den Scope der Variable so einzuschränken, das sie ihn schon vor Ende des Programmes verläßt.int main() { //Irgendwelcher code { klasse dat1; //Irgendwelcher code } // Variable verlässt den Scope //Irgendwelcher code }
-
wenn mir das Objekt zu frueh freigegeben wird, zerschiesst es meine Anwendung, da ich in destructor etwas verwende was wohl auch global aufraeumt. Es handelt sich kongret um die Zeile: TTF_CloseFont( font );
//Close the font that was used //TTF_CloseFont( font ); //Quit SDL_ttf TTF_Quit();Das ist von der SDL-Programmbibliothek. Ich moechte halt nicht zu machen, bevor ich geschlossen habe. So geht es, ist aber schlechter Stil.

-
Du kannst deiner Klasse eine Destroy Funktion geben, welche dann aufräumt.
So kann man jederzeit die Resourcen freigeben, ohne das eigentliche Objekt zu löschen.
Aber eigentlich müsstest du dich Fragen, ob dies in den Kontext des Objektes gehört.
Evtl. ist es wo anders besser aufgehoben
-
Ja da hast du sicherlich recht. Hier muss ich wohl noch einiges ueberdenken.
