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传入。