Je n'arrive pas à déclarer un pointeur générique à fonction.C++ pointeur générique vers (membre?) Fonction
Avoir ces 2 fonctions à appeler:
void myfunc1(std::string str)
{
std::cout << str << std::endl;
}
struct X
{
void f(std::string str){ std::cout<< str << std::endl;}
};
et ces appelants deux fonctions:
typedef void (*userhandler_t) (std::string);
struct example
{
userhandler_t userhandler_;
example(userhandler_t userhandler): userhandler_(userhandler){}
void call(std::string str)
{
userhandler_(str);
}
};
template<typename func_t>
void justfunc(func_t func)
{
func("hello, works!");
}
lorsque je tente de les utiliser avec boost :: bind pour appeler la fonction de membre qu'ils donnent moi compiler les erreurs.
cela fonctionne:
example e1(&myfunc1);
e1.call("hello, world!");
justfunc(&myfunc1);
cela ne:
X x;
example e2(boost::bind(&X::f, &x, _1));
e2.call("hello, world2!");
justfunc(boost::bind(&X::f, &x, _1));
Comment cela est censé être fait?
Ni le type de retour, ni le type d'argument de 'X :: f' correspond à ce que' example' exige. Qu'espériez-vous arriver? –