Erreur de polymorphisme

Erreur de polymorphisme

by Giorgio Facelli -
Number of replies: 2

Bonjour, 

Dans mon programme j'ai un pointeur de Toupie comme paramètre dans la méthode des integrateurs, qui devrait donc permettre d'utiliser les avantages du polymorphisme. Toutefois, au moment de l'appel de la méthode "evolution" (qui est differente pour chaque sous-classe de "Toupie"), le polymorphisme ne fonctionne pas et il utilise donc la méthode générale qui est dèfinie dans "Toupie". De plus, toujours dans la méthode de l'integrateur j'ai fait afficher la toupie en question et il reconnait que c'est un "ConeSimple" et pas seulement une "Toupie". Je me demandais donc si vous avez quelques idées de comment résoudre ce problème.

Merci d'avance.

In reply to Giorgio Facelli

Re: Erreur de polymorphisme

by Josué Antoine Maechling -

En effet comment tu le décris c'est bizarre, mais c'est peut-être lié à la manière dont tu fais appel à evolution ou peut-être tu as recréé un pointeur qqpart mais en copiant seulement la partie toupie et pas cone simple.

À moins que tu n'aies pas défini la méthode evolution comme étant virtuelle ?? C'est possible que ce soit une erreur toute bête.

Tu peux m'envoyer ton code si jamais

In reply to Josué Antoine Maechling

Re: Erreur de polymorphisme

by Josué Antoine Maechling -

Après avoir vu le code nous avons pu trouver l'erreur en corrigeant plusieurs parties suspectes :

-il créait des nouveaux pointeurs alloués dynamiquement en utilisant le constructeur de Toupie, qui faisait perdre toute différence pour Cone Simple (du genre new Toupie(*autrepointeur)).

-sa méthode affiche n'était pas virtuelle (pas la cause du problème bien sûr)