Salut à tous,
Le code suivant (test.cpp) ne compile pas avec gcc (gnu).
Voilà ce que donne la compilation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 struct A { int getValue() { return 33 ; } } ; struct B { int getValue( int i ) { return i * 2 ; } } ; struct C : public A, B {} ; int main( int, char *[] ) { C c ; c.getValue( 5 ) ; }
Ce n'est pas la première fois que je suis obligé de contourner le problème de la non-résolution d'un appel de méthode, par exemple en préfixant l'appel à la méthode non résolue par la classe propriétaire :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 test/test.cpp:11:4: error: request for member getValue is ambiguous c.getValue( 5 ) ; ^ test/test.cpp:5:16: note: candidates are: int B::getValue(int) struct B { int getValue( int i ) { return i * 2 ; } } ; ^ test/test.cpp:4:16: note: int A::getValue() struct A { int getValue() { return 33 ; } } ;
Mais ce n'est pas réellement satisfaisant ni très joli.
Code : Sélectionner tout - Visualiser dans une fenêtre à part c.B::getValue( 5 ) ;
Sur internet je n'ai jamais trouvé de réponse, car les demandes sur ce problème portent en général sur des cas évidents.
Est-ce un bug du compilateur ou ai-je loupé quelque chose ?
Suis-je le seul à rencontrer ce problème ?
Merci
Partager