J'ai un pointeur de fonction définie par:Appel d'un pointeur de fonction C++ sur une instance d'objet spécifique
typedef void (*EventFunction)(int nEvent);
Y at-il un moyen de gérer cette fonction avec une instance spécifique d'un objet C++?
class A
{
private:
EventFunction handler;
public:
void SetEvent(EventFunction func) { handler = func; }
void EventOne() { handler(1); }
};
class B
{
private:
A a;
public:
B() { a.SetEvent(EventFromA); } // What do I do here?
void EventFromA(int nEvent) { // do stuff }
};
Edit: Orion a les options Boost offres telles que:
boost::function<int (int)> f;
X x;
f = std::bind1st(
std::mem_fun(&X::foo), &x);
f(5); // Call x.foo(5)
Malheureusement Boost est pas une option pour moi. Y at-il une sorte de "currying" fonction qui peut être écrit en C++ qui fera ce genre de retour d'un pointeur sur une fonction membre dans un pointeur de fonction normale?
Oui, il y a une fonction C++ taitement, appelé TR1 :: bind ou boost :: bind! Et oui il y a un emballage pour tenir le résultat au curry. C'est ce qu'on appelle tr1 :: function ou boost :: function. – Aaron
Quelqu'un peut-il s'il vous plaît fournir une réponse d'extrait de code en utilisant la fonction std :: C++ 11? J'apprends le C++ et c'est confus pour moi, car je m'attends à quelque chose d'aussi basique, mais toutes les réponses ci-dessous qui reviennent à booster ou C++ 11 ne fournissent pas vraiment un extrait de code/howto. – Dima