Bonjour,
Mon problème est le suivant:
Afin de tester ma classe Systeme et les fonctionnalités liées aux classes Dessinable et SupportADessin, j'ai une main() dans un fichier Test_Dessin.cc. J'arrive à créer un Systeme, y ajouter des toupies ainsi qu'attribuer un SupportADessin à mon Systeme et au toupies qui le composent. Les différente fonctionnalités fonctionnent bien à priori. Le problème survient à la fin de l’exécution du programme. en effet, j'ai un message d'erreur d'erreur et le programme ne se termine pas correctement. Après quelques essais, je pense que le problème se situe au moment de détruire le Systeme.
Pour clarifier un peu la situation, mon programme se structure comme suit:
[SUPPRIMÉ]
Le déroulement de mon programme de test est assez simple. je crée un Systeme et lui attribue un SupportADessin, j'y met une ou des toupies, je test la fonction dessine() qui doit afficher le Systeme avec ses Toupie. Cette partie là fonctionne sans souci à première vue. Mais quand le programme devrait se terminer, j'ai ce genre de message dans mon invite de commande:
"
------------------
(program exited with code: -1073741819)
"
J'ai pu isolé trois types de déroulement différents:
1) J'initialise un Systeme en lui attribuant un SupportADessin, mais en ne lui ajoutant aucune Toupie. Dans ce cas, le programme se termine sans erreur
2) Pareil mais en ajoutant une Toupies et en affichant le Systeme. Le résultat est le suivant:
3) Pareil qu'avant mais avec 2 ou plus Toupie (ici 3):
Je précise que j'ai modifier les destructeurs de toutes ces classes afin qu'ils affiche le nom de la classe au moment ou ils sont applé. Ici on peut voir que le destructeur de Systeme est appelé, puis de ConeSimple qui appelle celui de Toupie etc... Je précise que le nombre qui Toupie qui sont visiblement détruite (ou l'on peut l'observer sur l'affichage) lors de l'appelle du destructeur de Systeme reste le même pour des systeme de deux ou plus toupies.
Voilà les informations que j'ai pu avoir. Je me doute qu'il doit y avoir un problème avec les pointeurs, mais je ne sais vraiment pas où. D'autant que j'ai tester d'initialiser un tableau dynamique de unique_ptr<Toupie> manuellement dans ma main() de test, et dans ce cas, le tableau se détruit sans problème.
Merci d'avance !
Florian Käslin
(Modifié par Jean-Cédric Chappelier : PAS DE FUITE DE CONCEPTION NI DE CODE SUR LE PROJET !!!)