map + function d'une classe
Bonjour,
je me casse les dents sur un problème tout simple: faire une map avec des string et en face des fonctions
dans une classe de scripts, j'ai des mots en string qui correspondent à des fonctions du code.
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
class scriptExecutor
{
public
...
private:
int command_A(unsigned long int &wait);
int command_B(unsigned long int &wait);
int command_C(unsigned long int &wait);
...
} |
Toutes les fonctions ont la même définition.
puis dans mon code j'ai droit à ceci dans ma fonction d'analyse des mots:
Code:
1 2 3 4 5 6 7
|
if (command=="A" )
return command_A(wait);
if (command=="B" )
return command_B(wait);
... |
J'ai donc décidé de changer cela, aussi j'ai pensé à utiliser un map + function
j'ai écris ceci
Code:
std::map<std::string, std::function<int(unsigned long int &)>> listeCommande;
mais je n'arrive pas à écrire la suite !
Code:
listeCommande["A"] = scriptExecutor::command_A;
me donne droit à un error: invalid use of non-static member function.
Je comprends pourquoi, je n'ai pas défini correctement la map car une fonction de classe n'a pas le même prototype qu'une simple fonction .
En fait, je ne sais pas faire et avec google je ne dois pas avoir les bons mots clefs.
Je ne sais pas écrire non plus l'itérator:
si command contient la valeur std:string
Code:
1 2
|
it = listeCommande.find(commande); |
comment écrit on que le it->second doit utiliser l'argument (wait) :weird: ?