Salut,
Je me demande pourquoi ce code génère une erreur "request for member 'f' is ambiguous" à la compilation :
...vu que f() de A est private, la classe D ne devrait pas avoir de visibilité dessus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 class A { private: void f(){} }; class B { public: void f(){} }; class D: public A, public B { }; int main() { D d; d.f(); }
J'aurais pensé que f() de A n'existe pas pour la classe D.
Rassurez-vous j'ai cherché sur le web (pas trop longtemps non plus), et j'n'ai pas trouvé d'exemple parlant de ce cas.
NB : je compile avec Qt Creator sur windows. J'ai configuré en C++11 et j'ai exactement ces messages :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 ..\exemple\main.cpp: In function 'int main()': ..\exemple\main.cpp:22:7: error: request for member 'f' is ambiguous d.f(); ^ ..\exemple\main.cpp:12:10: note: candidates are: void B::f() void f(){} ^ ..\exemple\main.cpp:6:10: note: void A::f() void f(){}
Partager