std::function -> pointeur de fonction

Voici un code:

#include <functional>
using namespace std::tr1;

typedef void(*fp)(void);

void foo(void)
{

}

void f(fp)
{

}

int main()
{
  function<void(void)> fun = foo;
  f(fun); //error
  f(foo); //ok
}

À l'origine, j'ai besoin de faire un pointeur de fonction à partir de la non-statique méthode de la classe parce que j'ai besoin d'enregistrer des données entre les appels de fonction. J'ai essayé std::tr1::bind et boost::bind, mais ils reviennent objet fonctionnel, pas de pointeur, qui, comme je peux le voir, ne peut pas être "coulé" pur fonctionnelle pointeur. Alors que la signature de la fonction (SetupIterateCabinet) exige une pure func pointeur exactement.

- Je besoin d'un conseiller sur la façon de résoudre le problème. Merci.

OriginalL'auteur fogbit | 2012-05-11