这是一个代码:
#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
and boost::bind
,但它们返回的是函数对象,而不是指针,正如我所见,它不能“强制转换”为纯函数指针。而函数签名 ( SetupIterateCabinet
) 恰好需要一个纯 func 指针。
我需要一个建议如何解决这个问题。谢谢你。