Bonjour,
Je me resous à poster parce que mon code ne se comporte vraiment pas comment je pense qu'il devrait se comporter. J'ai du louper quelque chose d'énorme mais je ne vois pas...

Voila une fonction :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
bool isActionKnown(const char* actionName, Action *a)
{
	map<string,Action*>::iterator result;
	result = knownActions.find( actionName );
	if (result == knownActions.end() )
		return false;
	else
	{	
		a = knownActions[actionName];
		cout<<"Value inside the function : "<<a->name<<endl;
		return true;
	}
}
Et voilà un bout de code qui l'appelle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
Action* A = new Action("test");
cout<<"Value before the function : "<<A->name<<endl;
k.isActionKnown("empty",A);
cout<<"Value after the function : "<<A->name<<endl;
Et la trace du programme est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Value before the function : test
Value inside the function : empty
Value after the function : test
Alors ma question est : pourquoi je n'ai pas "value after the function : empty"...
Parce que l'objet qui est passé est une copie (donc une copie du pointeur ?)
Le truc c'est qu'on ne peut pas passer un pointeur par reference...