typedef void (MyClass::*Fonction)()
Salut tout le monde,
Je viens de récupérer un code c++ et comme je suis débutant en ce domaine j'ai une question a vous poser. Je n'arrive tout simplement pas a comprendre ce bout de code. J'ai tenté de me renseigner auparavant mais les recherches ont été infructueuses.
MyClass.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
class MyClass;
typedef void(MyClass::*Fonction)();
class MyClass : public OtherClass
{
...
std::map<std::string, Fonction> functionFormat;
...
public:
MyClass(std::string newFile = "C:/tmp");
void formatAppelMessage();
void formatEtatEntree();
void formatSurveillanceLiaison();
void formatAccuseReception();
} |
MyClass.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| MyClass::MyClass(std::string newFile)
{
...
functionFormat["PC"] = &MyClass::formatAppelMessage;
functionFormat["IS"] = &MyClass::formatEtatEntree;
functionFormat["MO"] = &MyClass::formatSurveillanceLiaison;
functionFormat["R"] = &MyClass::formatAccuseReception;
}
...
void MyClass:formatData()
{
(this->*functionFormat[idCommande.c_str()])();
} |
En gros j'aimerais savoir ce que veut dire ce
Code:
typedef void(MyClass::*Fonction)();
Idem pour cette portion
Code:
std::map<std::string, Fonction> functionFormat
Je suppose vaguement que cette map contient d'autres fonctions. Si c'est bien cela je m'excuse mais je suis debutant en c++, et je ne connaissais pas.
D'autre part si vous pouviez me confirmer cette partie. J'imagine qu'on va stocker les fonctions dans la map pour y faire appel plus tard. Ce qui me trouble c'est le &MyClass.
Code:
functionFormat["PC"] = &MyClass::formatAppelMessage;
D'autant plus que le code semble en appeler une plus tard. Dans ce cas ce serait selon le idCommande (qui est de type string) qu'on appellerait la fonction adequate n'est-ce pas ?
Code:
(this->*functionFormat[idCommande.c_str()])();
Merci d'avance pour vos réponses :)