#include <iostream>
using namespace std;
class A
{
public:
///proc是一种函数指针类型,该类型的返回值是void,有2个int类型的参数
typedef void (A::*proc)(int, int);
void attach(proc p)
{
m_proc = p;
}
void d(int a, int b)
{
cout << a << "\t" << b << endl;
}
void f()
{
///把类A的d函数赋值给变量m_proc
m_proc = (proc)&A::d;
}
void k()
{
///调用函数m_proc
(this->*m_proc)(1, 2);
}
private:
///用proc这种数据类型定义了一个变量叫做m_proc
proc m_proc;
};
A a;
class B
{
public:
void k()
{
///把类A的d函数赋值给变量m_proc中,把函数ff的类型转换成A::proc类型
a.attach((A::proc)&B::ff);
}
void ff(int a, int b)
{
cout << __FILE__ << endl;
}
};
int main()
{
///A a;
///a.f();
///a.k();
B b;
b.k();
a.k();
return 0;
}