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;
	}
};
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));
	}
};
Mon but est de passer la fonction on_quit de Controler en argument à la fonction listenQuit() de View.

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