Bonjour. Je suis tomb� sur un truc louche et j'aimerais votre avis dessus.
Dans un code que j'observe, j'ai une classe qui a (entre autres) une variable d'instance qui est un void*
Dans le constructeur de MaClasse, maVariable est initialis�e en construisant une instance d'une autre classe bien determin�e:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 classe MaClasse { /*...*/ void* maVariable; /*...*/ }
Dans chacune des fonctions ou maVariable est utilisee, elle est cast�e:
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 MaClasse::MaClasse() { /*...*/ maVariable = new UneClasseBienDeterminee(); /*...*/ }
SAUF lors de la destruction (ce qui m'inquiete)
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 MaClasse::uneFonctionQuelconque { /*...*/ ((UneClasseBienDeterminee*)maVariable)->uneFonctionDeLaClasseBienDeterminee(); /*...*/ }
Ma question est: tout ceci est-il bien normal? La "ClasseBienDeterminee" est dans une librarie dont je ne poss�de pas de version compil�e et mode debug. Je ne peux donc pas "stepper" dedans, et je n'ai pas vraiment moyen de savoir si son destructeur est bien appell� ou non.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7 MaClasse::~MaClasse() { /*...*/ delete maVariable; maVariable=NULL; /*...*/ }
Il ne semble pas y avoir d'erreur au run-time, mais comme la destruction se fait au moment de quitter le programme, je pense que m�me si le destructeur n'est pas appell� je ne m'en apercevrait pas.
Merci de vos avis
Partager