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