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

1. 首先引用boost::function和boost::bind的头文件和库;

#include "boost/bind.hpp"
#include "boost/function.hpp"

          
2. 声明自己的function模板

typedef boost::function<void(ICommandContextEx*)> CMDHANDLER;

3. 写出自己类及成员函数

class CCommunicationMap
                {
                public:
                                CCommunicationMap(void);
                                ~CCommunicationMap(void);

                public:
                                void TestCommand( int nParam);
                };

 
4.关联成员函数到boost::function中

                    
                         CCommunicationMap m_communication;

                                CMDHANDLER fun;
                                fun boost::bind(&CCommunicationMap::TestCommand, &m_communication, _1);

上面的bind语法的意思: 传入类成员函数指针, 类对象指针, _1表示占位符, 通过_1占位传入参数int nParam;

5. 调用方法

          fun(22); //22通过_1传入。
posted @ 2013-07-03 11:12  muzizongheng  阅读(1352)  评论(0编辑  收藏  举报
如果我们时时忙着展现自己的知识, 将何从忆起成长所需的无知?