Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VC++] Destruction de classe fille

2 réponses
Avatar
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

2 réponses

Avatar
Sylvain
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.
Avatar
Harry
Effectivement, le problème venait de là.
Merci.