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 :
Et voilà un bout de code qui l'appelle :
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 la trace du programme est :
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;
Alors ma question est : pourquoi je n'ai pas "value after the function : empty"...
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
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...
![]()
Partager