C ++ appelant un pointeur de fonction statique

Je voudrais transférer un rappel à un pointeur de fonction. Je déclare donc un m_pointer1 statique (int *), ainsi qu’une méthode void RegisterCallback1 ((int *) fct)

en classe1.h:

public: int RegisterCallback1( int (*fct) ); private: static int (*m_Callback1); 

dans class1.cpp:

 int class1::RegisterCallback1( int (*fct) ) { m_Callback1= fct; } 

alors, je veux transférer le rappel au pointeur de fonction:

 void class1::Callback1() { (*m_Callback1)(); } 

Mais je reçois une erreur du compilateur “Expression doit avoir (pointeur sur) – le type de fonction que j’ai suivi le tutoriel et lire sur les pointeurs de fonction et ils semblent le faire de cette façon sans aucun problème. Des idées pour lesquelles?

EDIT: Donc, je déclare (int *) (void) m_Callback1 -Visual Studio nécessite un vide ici …- Alors comment puis-je appeler la fonction registerCallback avec l’argument?

 class1.RegisterCallBack1( ??? - class2::callback -??? ); 

Vous n’avez pas déclaré de pointeur de fonction, vous avez déclaré un pointeur de données normal. Il vous manque () à la fin de la déclaration.

static int (*m_Callback1) ne décline pas un pointeur de fonction, mais simplement un pointeur sur int: vous avez oublié la liste des parameters. Vous vouliez:

 static int (*m_Callback1)(); 

et

 int RegisterCallback1( int (*fct)() ); 

Vous pouvez essayer de limiter les erreurs manquantes () signalées par Oli et Dave en utilisant un typedef pour la signature de la fonction de rappel: typedef int (*)() CallBack; Cela aurait au moins le mérite de vous laisser réfléchir une fois sur le nombre exact de crochets plutôt que sur chaque sharepoint votre code où vous utilisez une telle fonction.