[VC++] Destruction de classe fille

Le
Harry
Bonjour à tous,
Voila, j'ai un programme structuré sur la base d'une classe "GameState"
ne contenant que des fonctions virtuelles. Les états du programmes sont
des classes qui héritent de cette classe "GameState".
Lorsque l'on change d'état, la classe actuelle est détruite par un
delete et la suivante est crée par un new.
Hors je m'aperçoit que les fonctions destructeurs ne sont pas appelées.
Ceci est d'ailleurs visible à l'execution par l'augmentation de la
mémoire utilisée à chaque changement d'état. De plus par un système de
fichier log, je confirme la non destruction de ces classes.

J'utilise Visual studio 2005 SP2.
Pour les plus curieux, voir ci-dessous un lien ou trouver le source et
le projet VC2005 ainsi que l'executable.

Merci de votre aide.

http://pcpro.team.free.fr/sdltest.zip
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sylvain
Le #9747511
Harry wrote on 11/11/2007 21:35:

Lorsque l'on change d'état, la classe actuelle est détruite par un
delete et la suivante est crée par un new.
Hors je m'aperçoit que les fonctions destructeurs ne sont pas appelées.



normal puisqu'il n'y a pas de destructeur ... dans la classe de base.
il doit exister pour être défini explicitement virtuel (ici un dst non
virtuel a été créé par le compilo).

class GameState {
public:
virtual ~GameState() {}
virtual void handle_events() = 0;
virtual void render() = 0;
};

Sylvain.
Harry
Le #9747461
Effectivement, le problème venait de là.
Merci.
Publicité
Poster une réponse
Anonyme