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 : 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
 
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