boost :: bind를 사용하여 함수 포인터를 전달하려고합니다.boost 콜백 함수 포인터를 매개 변수로 boost
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 클래스에서 메서드를 선언합니까?
+1, 멤버 함수 사용에 대한 대안을 언급하는 것을 잊어 버렸습니다. – Anthony