【发布时间】:2011-11-22 01:27:06
【问题描述】:
我正在尝试使用 boost::bind 传递函数指针。
void
Class::ThreadFunction(Type(*callbackFunc)(message_type::ptr&))
{
}
boost::shared_ptr<boost::thread>
Class::Init(Type(*callbackFunc)(message_type::ptr&))
{
return boost::shared_ptr<boost::thread> (
new boost::thread(boost::bind(&Class::ThreadFunction, callbackFunc))
);
}
我收到以下错误:
1>C:\dev\sapphire\boost_1_46_1\boost/bind/mem_fn.hpp(362) : warning C4180: qualifier applied to function type has no meaning; ignored
1>C:\dev\sapphire\boost_1_46_1\boost/bind/mem_fn.hpp(333) : error C2296: '->*' : illegal, left operand has type 'Type (__cdecl **)(message_type::ptr &)'
但是,我能够更改为以下内容,它工作正常:
void
ThreadFunction(Type(*callbackFunc)(message_type::ptr&))
{
}
boost::shared_ptr<boost::thread>
Class::Init(Type(*callbackFunc)(message_type::ptr&))
{
return boost::shared_ptr<boost::thread> (
new boost::thread(boost::bind(&ThreadFunction, callbackFunc))
);
}
如果我在 Class 类中声明方法,为什么会出现这些错误?
【问题讨论】:
标签: c++ boost callback boost-bind