Bonjour,

décidemment, 2 ans de C# et je n'y comprend plus rien au c++

Prenons le code suivant:
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
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:
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.