首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于boost bind的有关问题

2013-04-20 
关于boost bind的问题typedef bool EvtCallBack(evt::ZEventPtr)class CNode {templateclass Tstatic v

关于boost bind的问题

typedef bool EvtCallBack(evt::ZEventPtr);

class CNode {
template<class T>
static void createNode(evt::EventType evtType, T* obj, EvtCallBack (T::* call) );
}

template<class T> inline
void CNode::createNode( evt::EventType evtType, T* obj, EvtCallBack (T::* call) ) 
{
createNode(evtType, boost::bind(&call, obj, _1)); //这句话编译出错
}

出错如下:
1>E:\3rdParty\include\boost/bind/bind.hpp(69): error C2825: 'F': must be a class or namespace when followed by '::'
1>          E:\3rdParty\include\boost/bind/bind_template.hpp(15) : see reference to class template instantiation 'boost::_bi::result_traits<R,F>' being compiled
1>          with
1>          [
1>              R=boost::_bi::unspecified,
1>              F=bool (__thiscall CSession::* *)(evt::ZEventPtr)
1>          ]
1>          e:\project\dev\cmn\CombineNode.h(34) : see reference to class template instantiation 'boost::_bi::bind_t<R,F,L>' being compiled
1>          with
1>          [
1>              R=boost::_bi::unspecified,
1>              F=bool (__thiscall CSession::* *)(evt::ZEventPtr),
1>              L=boost::_bi::list2<boost::_bi::value<CSession*>,boost::arg<1>>
1>          ]
1>          CSession.cpp(13) : see reference to function template instantiation 'void CombineNode::createNode<CSession>(evt::EventType,T *,bool (__thiscall CSession::* )(evt::ZEventPtr))' being compiled
1>          with
1>          [
1>              T=CSession
1>          ]
1>E:\3rdParty\include\boost/bind/bind.hpp(69): error C2039: 'result_type' : is not a member of '`global namespace''
1>E:\3rdParty\include\boost/bind/bind.hpp(69): error C2146: syntax error : missing ';' before identifier 'type'
1>E:\3rdParty\include\boost/bind/bind.hpp(69): error C2208: 'boost::_bi::type' : no members defined using this type
1>E:\3rdParty\include\boost/bind/bind.hpp(69): fatal error C1903: unable to recover from previous error(s); stopping compilation



不知道为何出错,请高手指点
[解决办法]


boost::bind(&call, obj, _1) 这里的&call去掉 &

boost::bind(call, obj, _1)

热点排行