原来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)(); //以一种奇怪的方式进行“类成员函数指针”的调用
}
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