Bonjour,
Cela fait quelques heures que je cherche la syntaxe et que je ne trouve pas.
Un pointeur de fonction sur fonction membre de classe :
Une structure qui contient un membre pointeur de fonction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part typedef void (Automate::* Function_t)(void);
Une variable locale de type Automate_t :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 typedef struct { int State; int Event; Function_t Function; int NextState; } Automate_t;
Et enfin la tentative (pour l'instant) d'appel :
Code : Sélectionner tout - Visualiser dans une fenêtre à part const Automate::Automate_t a = { 0, 1, NULL, 0 }; // peu importe si la syntaxe n'est pas très bonne, c'est pour l'exemple
Mais bien sûr "syntax error" et je n'arrive pas à comprendre comment le message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(a.Function != NULL) (a.Function)();
Bien sûr, j'ai fait plusieurs tentatives et variations autour de cette syntaxe mais je ne trouve pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Automate.cpp:30: erreur : must use '.*' or '->*' to call pointer-to-member function in 'a.Automate::Automate_t::Function (...)', e.g. '(... ->* a.Automate::Automate_t::Function) (...)' (a.Function)(); ^
Challenge : qui trouveras la solution et la syntaxe correcte ?
PS : Pour info (et bien que cela ne soit pas utile dans ce cas), c'est pour un automate à états finis
Partager