Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2722 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Problème avec héritage et méthode virtuelle

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème avec héritage et méthode virtuelle

n°1642970
nathan_g
Posté le 14-11-2007 à 19:48:02  profilanswer
 

Bonjour,
 
J'ai rédigé le code suivant :
 

Code :
  1. #include <iostream>
  2. using namespace std;
  3. class Article
  4. {
  5. public :
  6.   Article() {}
  7.   Article(string denom) : name(denom) {}
  8.   virtual double tva(double*);
  9.  
  10. private:
  11.   string        name;
  12. };
  13. class Livre : public Article
  14. {
  15. public :
  16.   Livre() {}
  17.   Livre(string denom) : Article(denom) {}
  18.   double tva(double* entree)
  19.   {
  20.     return (19.6);
  21.   }
  22. };
  23. int main()
  24. {
  25.   Livre Bouquin("Ra" );
  26. }


 
Mais, en retour, à la compilation, j'ai le message d'erreur suivant :
 

Code :
  1. main.o(.text+0x38): In function `main':
  2. : undefined reference to `vtable for Article'
  3. main.o(.text+0x73): In function `main':
  4. : undefined reference to `vtable for Article'
  5. main.o(.gnu.linkonce.r._ZTI5Livre+0x8): undefined reference to `typeinfo for Article'
  6. collect2: ld returned 1 exit status


 
Pourtant, je pensais avoir correctement rédigé ce code, qui combine à la fois les notions d'héritage et de méthode virtuelle.
J'ai déjà rédigé des codes avec des principes simialires qui compilait.
 
Pourriez-vous m'indiquer l'erreur, surement bête , ;) que j'ai du commettre.
 
D'avance merci,
 
Nathan

mood
Publicité
Posté le 14-11-2007 à 19:48:02  profilanswer
 

n°1642976
KangOl
Profil : pointeur
Posté le 14-11-2007 à 19:53:57  profilanswer
 

faut mettre la méthode en virtuel pure :o

n°1643120
bjone
Insert booze to continue
Posté le 15-11-2007 à 01:33:21  profilanswer
 

pour Article c'est soit ça:
 
virtual double tva(double*) = 0; // pure, non instanciable, les classes dérives doivent implémenter la méthode virtuelle
 
soit ça (pour avoir un resultat par défaut):
 
virtual double tva(double*) { return 0; } // fallback sur une tva de 0
 
est-ce bien nécessaire d'avoir un pointeur sur double en entrée ?  
(si tu retournes le pourcentage de tva, y'a pas a avoir de paramètres)


Message édité par bjone le 15-11-2007 à 01:33:58
n°1643121
AthlonSold​ier
Feel the power
Posté le 15-11-2007 à 01:54:12  profilanswer
 

Il y a en qui ont appris le C++ dans des pochettes surprises  :lol:  :D

n°1643143
Joel F
Real men use unique_ptr
Posté le 15-11-2007 à 08:35:59  profilanswer
 

AthlonSoldier a écrit :

Il y a en qui ont appris le C++ dans des pochettes surprises  :lol:  :D


 
Dans le meilleur des cas :/
A crooire que la totalité des formations C++ ici sont à chier :/

n°1643358
bjone
Insert booze to continue
Posté le 15-11-2007 à 13:07:25  profilanswer
 

doh my bad ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Problème avec héritage et méthode virtuelle

 

Sujets relatifs
Probleme boucle (debutant) Urgenntttttttprobleme table de hachage dans requete find
Problème de cration d'un thème pour mon siteprobleme de tri de la base de donnée (colonne)
[Résolu] Problème de chargement d'imageprobleme expressions regulieres php
Pblm héritage et méthode "sans" argument...Probleme de chagement SWF
HTML (?) - Probleme affichage texte trop large. 
Plus de sujets relatifs à : Problème avec héritage et méthode virtuelle


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR