Salut,

Je me demande pourquoi ce code génère une erreur "request for member 'f' is ambiguous" à la compilation :

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();
}
...vu que f() de A est private, la classe D ne devrait pas avoir de visibilité dessus.
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(){}