- // testBind.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include <boost/bind.hpp>
- #include <boost/function.hpp>
- #include <assert.h>
- #include <iostream>
- /*
- Title:boost::bind应用示例
- 示例运行环境:
- [1]boost 1.39 SDK
- [2]VisualStudio2008 + SP1
- 示例内容:
- Precondition:MySubClass实例方法 参数方法列表 已知
- Do:控制权从MyParentClass实例方法,转移到,MySubClass实例方法。
- */
- //MyDataType:自定义数据类型
- struct MyDataType{
- MyDataType() {}
- MyDataType(int nV):m_nV(nV) {}
- int m_nV;
- };
- //MyParentClass:框架Class,负责消息派发
- class MyParentClass{
- public:
- boost::function<int(int,MyDataType)> m_fSub;
- int CallSubClassFunc(int nDT,MyDataType mdtDT)
- {
- int nR = m_fSub(nDT,mdtDT);
- return nR;
- }
- };
- //MySubClass:业务逻辑层,负责消息处理
- class MySubClass{
- public:
- int Run(int nDT,MyDataType mdtDT)
- {
- return nDT+mdtDT.m_nV;
- }
- };
- int _tmain(int argc, _TCHAR* argv[])
- {
- MyParentClass mpc;
- MySubClass msc;
- //两种实例方法间,建立联系
- mpc.m_fSub=boost::bind<int>(&MySubClass::Run,msc,_1,_2);
- //触发调用
- int nR=mpc.CallSubClassFunc(2,MyDataType(3));
- assert(nR==5);
- return 0;
- }
http://blog.csdn.net/lee353086/article/details/5269910