Elements hérités dans une liste - C++ - Programmation
Marsh Posté le 17-07-2007 à 19:01:19
Je viens de faire la correction que tu proposes sans que cela ne change rien.
Désolé, mais le problème vient d'ailleurs.
Marsh Posté le 17-07-2007 à 19:07:38
Le polymorphisme ne marche qu'avec des pointeurs.
Ajouter le mot clé 'virtual' dans les classes dérivées, c'est surtout une indication de notation il me semble (si je me trompe, corrigez-moi svp ).
Marsh Posté le 17-07-2007 à 19:13:02
effectivement, l'ajout dans le vecteur va faire une copie de l'objet donc ...
Marsh Posté le 17-07-2007 à 19:19:20
Par rapport à vos indications, la modification du main en :
Code :
|
donne les résultats attendus.
Me conseillez-vous cette écriture ?
Marsh Posté le 17-07-2007 à 19:28:50
En renforçant tes pointeurs par à peu près n'importe quelle méthode de gestion de pointeur, oui (que ce des auto_ptr<> ou des boost::shared_ptr<> ou... autre (boost en possède une belle collection)).
Taz a également fait mention il y a quelques jours de conteneurs adaptés à l'utilisation de pointeur chez boost
Marsh Posté le 18-07-2007 à 11:45:48
nathan_g a écrit : Par rapport à vos indications, la modification du main en :
|
Certainement pas le point après la } fermante du main. Manque des destructeurs virtuels et faut prendre conscience des problèmes d'allocation. Et écrire ++ et pas ++
Marsh Posté le 17-07-2007 à 18:53:45
Bonjour,
Je rencontre un problème dans le programme suivant :
Comme indiqué, la méthodes tva() appliquée aux deux objets de la liste d'article renvoie 19.6, malgré la virtualité de la méthode tva() qui, je l'espérais, allait conduire à appliquer la méthode tva() propre à chacun des deux objets (soit 5.5 pour les livres et 2.1 pour les médicaments). Pourriez-vous m'indiquer d'où vient le problème et comment forcer le programme à appliquer la méthode propre à chacune des classes, sans faire appel à la méthode de la classe parent (mais en continuant à travailler avec les éléments d'une liste !).
Est-ce un problème avec l'utilisation du polymorphisme ?
D'avance merci