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

  FORUM HardWare.fr
  Programmation
  C++

  Heritage en diamant et virtual pure

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Heritage en diamant et virtual pure

n°2204119
azubal
Posté le 25-09-2013 à 11:59:56  profilanswer
 

Salut tout le monde,
 
Soit le code suivant :

Code :
  1. class I1
  2. {
  3. public:
  4. virtual int foo() = 0;
  5. };
  6. class A : public I1
  7. {
  8. public:
  9. virtual int foo() { return 42; }
  10. };
  11. class I2 : public I1
  12. {
  13. public:
  14. virtual int bar() = 0;
  15. };
  16. class B : public I2,  public A
  17. {
  18. public:
  19. virtual int bar() { return 69; }
  20. };
  21. int main()
  22. {
  23. B b;
  24. }


 
Qui me pète une erreur de compilation disant que B est abstrait à cause de foo().
Mais foo() est défini dans A.
 
Comment lui dire de passer par A plutôt que par I2 (sans avoir à redefinir foo() dans B) ?
 
Merci d'avance  :jap:

mood
Publicité
Posté le 25-09-2013 à 11:59:56  profilanswer
 

n°2204120
azubal
Posté le 25-09-2013 à 12:16:48  profilanswer
 

Hum.
Bon si j’hérite I1 dans A et I2 en "virtual public" ca fonctionne malgre un warning du compilo.
En revanche si je redéfini foo dans B en précisant explicitement quel appel je veux faire "A::foo()" ca marche impec!

n°2204127
theshockwa​ve
I work at a firm named Koslow
Posté le 25-09-2013 à 14:35:11  profilanswer
 

C'est quand même ultra rare d'avoir besoin d'un héritage virtuel. Tant mieux si tu as trouvé une solution à ton problème, mais envisage quand même de revoir ton design au cas où :)


---------------
last.fm
n°2204299
Joel F
Real men use unique_ptr
Posté le 26-09-2013 à 20:29:27  profilanswer
 

l'heritage simple ou multiple de classe concrete est a proscrire. Respectez plutot Liskov et faites de l'heritage privé pour factoriser le code.


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

  Heritage en diamant et virtual pure

 

Sujets relatifs
Probleme constructeurs héritage[Ada][Débutant POO] Problème d'héritage à l'instantiation d'un paquet
JPA : Héritage entre les entity [EclipseLink]Heritage et Collections [RESOLU]
Héritage et constantes[RESOLU][c++] probleme de syntaxe dans un héritage
[Aide]Commande Visual Basic Expressquestion d'héritage et polymorphisme
[POO] Héritage vers Base de données relationelleVirtual Host et repertoire
Plus de sujets relatifs à : Heritage en diamant et virtual pure


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