Bonjour à tous !
Je tente, tant bien que mal, de passer une méthode de classe en argument à une autre (callback) ...
Voici le code simplifié :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include "icontroler.h" #include "view.h" class Controler : public IControler { private: View view; public: Controler() { view.listenQuit(this, &Controler::on_quit); } virtual ~Controler(); void on_quit() { view.hide(); return; } };Mon but est de passer la fonction on_quit de Controler en argument à la fonction listenQuit() de View.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include "icontroler.h" class View { public: View(); virtual ~View(); void listenQuit(IControler* inst, void (IControler::*on_func)()) { quit_file_menu.signal_activate().connect(sigc::mem_fun(inst, on_func)); } };
Or la classe View ne doit pas savoir de quel classe provient la fonction : pour cela j'ai utilisé une classe abstraite IControler car il peut y avoir plein de classe comme View.
Or mingW me sort l'erreur :
no matching function for call to View::listenQuit(Controler* const, void (Controler::*)())'
sur la ligne :
view.listenQuit(this, &Controler::on_quit);
Y a-t-il une astuce pour faire cela ???
Merci
Partager