首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boost函数+ boost绑定复杂情况

Boost函数+ boost绑定复杂情况
EN

Stack Overflow用户
提问于 2015-02-03 10:54:34
回答 1查看 167关注 0票数 0

我有会员职能:

代码语言:javascript
复制
void ClassA::Method(ClassB& inputarg);

我想要增强::功能:

代码语言:javascript
复制
boost::function< void (ClassB&) > 
            FunctionPointer(
            boost::bind((&ClassA::Method, _1, _2)(ClassC->ClassA_User, boost::ref(SomeStructure.ClassB_User)));

但它没有编译,我做错了什么?

error C2064: term不计算带有两个参数的函数C2780:'boost::_bi::bind_t<_bi::dm_result::type,boost::_mfi::dm,_bi::list_av_1::type> boost::bind(M T::*,“:期望两个参数--1提供了c:\git\3rdparty\common\include\boost\bind\bind.hpp(1728):参见”boost::bind“错误C2780:'boost::_bi::bind_t,_bi::list_av_9::type> boost::bind(boost::type,R (__thiscall T::* )(B1,B2,B3,B4,B5,B6,B7,B8) const,A1,A2,A3,A2,,,c:\git\3rdparty\common\include\boost\bind\bind_mf2_cc.hpp(223):A7,A8,A9):期望11个参数-1提供7> 7>:参见'boost::bind‘的声明

还有更多类似于最后一行输出。

EN

回答 1

Stack Overflow用户

发布于 2015-02-03 10:57:26

如果您想要创建boost::function<void(B&)>,那么使用

代码语言:javascript
复制
FunctionPointer(boost::bind(&ClassA::Method, ClassC->ClassA_User, _1));

FunctionPointer(SomeStructure.ClassB_User);一样叫它

如果您想传递已知的B实例,那么FunctionPointer的类型应该是

代码语言:javascript
复制
boost::function<void()>

绑定应该是这样的

代码语言:javascript
复制
boost::bind(&ClassA::Method, ClassC->ClassA_User,
boost::ref(SomeStructure.ClassB_User)));

然后像FunctionPointer()一样叫它;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28297137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档