Hériter la même fonction (de même signature) de deux classes
Salut,
Je me demande pourquoi ce code génère une erreur "request for member 'f' is ambiguous" à la compilation :
Code:
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:
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(){} |