[G++] Ambuguité sur une surcharge de fonction
Bonjour,
J'utilise GCC v4.1...
je n'ai pas une grande habitude des subtilités du C++ en matière de surcharge, mais il me semble que le code suivant devrait fonctionner :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
class cl
{
public:
virtual void func(const char *string) {
cout << "const char*" << endl;
}
virtual void func(const std::string &str) const { func(str.c_str()); }
};
int main(void)
{
cl c;
c.func("Test");
c.func(std::string("Test"));
return 0;
} |
Hors, si le premier appel se déroule bien, le second par en boucle infinie, en observant la pile il semble que ce ne soit pas func(const char *) qui soit appelé mais que l'on ait un appel récursif (et donc dans ce cas infini)
J'ai fait une erreur quelque part ?
Merci