Bonjour,
Le titre peut faire penser à la discussion juste au-dessus, mais pas tout à fait.
Je me demandais si l'héritage d'une classe de base était bel et bien sensé devenir virtuel après le premier héritage virtuel... Un exemple sera plus rapide :
Voilà ce qui ne marchait pas :
Code qui marche :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 classe Base { } ; class Interface{ }; class Derived : virtual public Base, public Interface { }; int main() { Derived d; Interface * i = &d //error : cannot convert from Derided* to Interface * }
Du coup, je me demandais où se plaçait la restriction. La norme ? La technique ? Le compilateur ? Merci d'avance de satisfaire ma curiosité !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 classe Base { } ; class Interface{ }; class Derived : public Interface, virtual public Base { }; int main() { Derived d(); Interface * i = &d // Marche parfaitement }
Partager