Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Ho un oggetto e devo salvare un file alla sua distruzione, ho scritto un distruttore:
HighScoreClass::~HighScoreClass() { ... }
Dove salvo il file, il codice per il salvataggio del file è funzionante perchè mettendolo in una funzione e invocandola il codice viene eseguito.
Ho poi pensato di eliminare esplicitamente l'oggetto con:
delete HighScore;
Ma il risultato non cambiava, ho notato in oltre che il codice del distruttore in modalità Relase (Visual C++) non veniva nemmeno linkato nell'eseguibile in quanto mettendo un break point mi avvisava che non c'era quella parte di codice eseguibile nel programma.
Non sapendo come fare ho cercato su google e ho trovato:
http://msdn.microsoft.com/it-it/library/ms177197.aspx Penso di aver capito il meccanismo, ho provato a sostituire la tilde con "!" ma il compilatore mi ha avvisato che il mio programma veniva compilato con un flag per usare la semantica normale dei distruttori.
Non so cosa fare, se c'è qualcuno che mi può aiutare grazie
Il distruttore non e' virtuale... e siccome dichiari la variabile HighScore di tipo Scene, solo il distruttore di Scene viene chiamato. Assicurati di dichiarare il distruttore in Scene virtuale.
Codice sorgente - presumibilmente Delphi
class Scene{
virtual ~Scene();
}
Class HighScoreClass :public Scene{
virtual ~HighScoreClass();
}
Ultima modifica effettuata da pierotofy il 15/10/2012 alle 15:49
Non me n'ero accorto, grazie, a dire il vero in Scene non c'era neanche un distruttore dunque essendo un puntatore a Scene non poteva sapere che ce ne fosse uno