Heritage multiple et polymorphsime

Heritage multiple et polymorphsime

by Tim Flückiger -
Number of replies: 1

Soit A une super-super classe dont hérite VIRTUELLEMENT deux classes B et C. Soit f une méthode publique constante de A.

Soit D une sous-classe qui hérite de B et C. (Scenario similaire à zoo.cc du MOOC)

Si nous voulons acceder à la méthode f au sein de D, nous pouvons utiliser par exemple using B::f; / using C::f;

Ou encore redefinir la méthode dans D.


Ma question est lorsqu'on envisage ce même scenario avec f déclarée comme virtuelle dans A, pour permettre le polymorphisme.

Lors de la compilation, si l'on ajoute ni using, ni re-définition de f dans D, une erreur se produit (" error: no unique final overrider for 'virtual void A::f() const' in 'D' ").



J'ai rajouté un "using B::f;" dans D mais l'erreur se produit quand même.

Pouvez-vous expliquer cela / comment corriger cette erreur?


Merci d'avance de votre réponse.

Tim Flückiger

In reply to Tim Flückiger

Re: Heritage multiple et polymorphsime

by Ronan Boulic -

il faut une redéfinition explicite de f dans D