retweet

原来C++支持 类成员函数指针

#include <iostream>
using namespace std;

class A;
typedef void (A::*pAFun)(void);  //定义类成员函数指针

class A{

public:
  void fun(){
      cout<<"A::fun run"<<endl;
  };
};

class B
{
protected:
  A *_a;
  pAFun _callback;

public:
  B():_callback(NULL), _a(NULL)
  {};
  
  void setOnDo(pAFun _pf_callback, A * pA)
  {
      _callback = _pf_callback;
      _a = pA;
  }
  
  void Do()
  {
      cout << "class B::Do ..." <<endl;
      cout << "class B::Do callback: ..." <<endl;
      if(_callback && _a)
      {
          (_a->*_callback)();  //以一种奇怪的方式进行&ldquo;类成员函数指针&rdquo;的调用
      }
      cout << "class B::Do return" <<endl;
  }
  
};

int main(int argc, char *argv[])
{
  A a;
  B b;

  b.setOnDo(&A::fun, &a);

  b.Do();

  return 0;
}

刚刚写代码验证的,做个记号。


--EOF--

若无特别说明,本站文章均为原创,转载请保留链接,谢谢

本文地址: http://www.dulao5.com/cpp/2007/01/23/how-to-use-class-member-function-point-in-cpp.html