BUG GCC ? "request for method is ambigous"
Salut à tous,
Le code suivant (test.cpp) ne compile pas avec gcc (gnu).
Code:
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 ) ;
} |
Voilà ce que donne la compilation :
Code:
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 ; } } ; |
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:
c.B::getValue( 5 ) ;
Mais ce n'est pas réellement satisfaisant ni très joli.
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