您的位置:首页 > 其它

boost::function 通过boost::bind调用类成员函数

2013-07-03 11:12 501 查看



1. 首先引用boost::function和boost::bind的头文件和库;
[align=left]#include "boost/bind.hpp"[/align][align=left]#include "boost/function.hpp"[/align][align=left]
[/align][align=left] [/align][align=left]2. 声明自己的function模板[/align][align=left]
[/align][align=left]typedef boost::function<void(ICommandContextEx*)> CMDHANDLER;[/align][align=left]
[/align][align=left]3. 写出自己类及成员函数[/align][align=left]
[/align][align=left]class CCommunicationMap[/align][align=left] {[/align][align=left] public:[/align][align=left] CCommunicationMap(void);[/align][align=left] ~CCommunicationMap(void);[/align][align=left]
[/align][align=left] public:[/align][align=left] void TestCommand( int nParam);[/align] };[align=left]
[/align][align=left] [/align]
4.关联成员函数到boost::function中[align=left]
[/align][align=left] [/align][align=left] CCommunicationMap m_communication;[/align][align=left]
[/align][align=left] CMDHANDLER fun;[/align][align=left] fun = boost::bind(&CCommunicationMap::TestCommand, &m_communication, _1);[/align][align=left]
[/align][align=left]上面的bind语法的意思: 传入类成员函数指针, 类对象指针, _1表示占位符, 通过_1占位传入参数int nParam;[/align][align=left]
[/align][align=left]5. 调用方法[/align][align=left]
[/align][align=left] fun(22); //22通过_1传入。[/align]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: