Вот код:
#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
}
Первоначально мне нужно сделать указатель на функцию из метода нестатического класса, потому что мне нужно сохранить данные между вызовами функций. Я пробовал std::tr1::bind
и boost::bind
, но они возвращают функциональный объект, а не указатель, который, как я вижу, не может быть "отлит" от чистого функционального указателя. Хотя сигнатура функции (SetupIterateCabinet
) требует чистого указателя func.
Мне нужно посоветовать, как решить проблему. Спасибо.