【发布时间】:2012-05-11 16:47:01
【问题描述】:
这是一个代码:
#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 指针。
我需要如何解决问题的建议。谢谢。
【问题讨论】: