Pointeur non modifié à l'interieur d'une fonction ? o_O
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:
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:
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:
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...
:help: