1. // testBind.cpp : Defines the entry point for the console application.
  2. //
  3. #include "stdafx.h"
  4. #include <boost/bind.hpp>
  5. #include <boost/function.hpp>
  6. #include <assert.h>
  7. #include <iostream>
  8. /*
  9. Title:boost::bind应用示例
  10. 示例运行环境:
  11. [1]boost 1.39 SDK
  12. [2]VisualStudio2008 + SP1
  13. 示例内容:
  14. Precondition:MySubClass实例方法 参数方法列表 已知
  15. Do:控制权从MyParentClass实例方法,转移到,MySubClass实例方法。
  16. */
  17. //MyDataType:自定义数据类型
  18. struct MyDataType{
  19. MyDataType() {}
  20. MyDataType(int nV):m_nV(nV) {}
  21. int m_nV;
  22. };
  23. //MyParentClass:框架Class,负责消息派发
  24. class MyParentClass{
  25. public:
  26. boost::function<int(int,MyDataType)> m_fSub;
  27. int CallSubClassFunc(int nDT,MyDataType mdtDT)
  28. {
  29. int nR = m_fSub(nDT,mdtDT);
  30. return nR;
  31. }
  32. };
  33. //MySubClass:业务逻辑层,负责消息处理
  34. class MySubClass{
  35. public:
  36. int Run(int nDT,MyDataType mdtDT)
  37. {
  38. return nDT+mdtDT.m_nV;
  39. }
  40. };
  41. int _tmain(int argc, _TCHAR* argv[])
  42. {
  43. MyParentClass mpc;
  44. MySubClass msc;
  45. //两种实例方法间,建立联系
  46. mpc.m_fSub=boost::bind<int>(&MySubClass::Run,msc,_1,_2);
  47. //触发调用
  48. int nR=mpc.CallSubClassFunc(2,MyDataType(3));
  49. assert(nR==5);
  50. return 0;
  51. }

http://blog.csdn.net/lee353086/article/details/5269910

05-21 01:16