constructeur et paramètre par référence constante
Bonjour,
décidemment, 2 ans de C# et je n'y comprend plus rien au c++ :aie:
Prenons le code suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| struct Foo
{
Foo( const std::string & str ) { cout << str << endl; }
};
void f( const std::string & str )
{
cout << str << endl;
}
int main()
{
f( "test" ); // ok
Foo( "test" ); //ok
std::string test= "test";
f( test ); //ok
Foo( test ); // erreur
} |
Pourquoi est-ce que la dernière ligne ne compile pas?
En plus mon compilateur (VS 2010) est complètement perdu, l'erreur qu'il me donne est sans rapport:
Citation:
error C2371: 'test' : redefinition; different basic types
il croit que j'essaie de redéfinir la variable test.
Sauriez-vous me dire pourquoi cette dernière ligne ne compile pas?
Il me semblait que le cast en référence constante était automatique.