Вот код:
#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
) требует именно чистого указателя на функцию.
Нужен совет, как решить проблему. Спасибо.