Polymorphisme et pointeur de fonction
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:
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:
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