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.
Toutes les fonctions ont la même définition.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); ... }
puis dans mon code j'ai droit à ceci dans ma fonction d'analyse des mots:
J'ai donc décidé de changer cela, aussi j'ai pensé à utiliser un map + function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 if (command=="A" ) return command_A(wait); if (command=="B" ) return command_B(wait); ...
j'ai écris cecimais je n'arrive pas à écrire la suite !
Code : Sélectionner tout - Visualiser dans une fenêtre à part std::map<std::string, std::function<int(unsigned long int &)>> listeCommande;
me donne droit à un error: invalid use of non-static member function.
Code : Sélectionner tout - Visualiser dans une fenêtre à part listeCommande["A"] = scriptExecutor::command_A;
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
comment écrit on que le it->second doit utiliser l'argument (wait) ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 it = listeCommande.find(commande);
Partager