写一点关于在B类中引用A类中的成员函数指针问题
由于在实际使用同中,创建一个通用的B类,在B类中某个时刻点,但又想做成一个通用的,而不是显示的被A类绑死。也就是让B类看起来很灵活,离开谁都可以自己转。ok看代码。
定义一个类A
class A
{
public:
A()
{
int t;
t= 0;
}
int fun1(int i){ //回作为函数指针注册到类B中,在某个时刻点,回调过来。
return i;
};
};
template <class T> //定义一个类模板B
class B
{
public:
B()
{
int t;
t= 0;
}
B(T a){
int t;
t= 0;
}
typedef int (T::*pFunc)(int);
void regFunc(T *obp, pFunc pf){ //注册函数指针
_obj = obp;
_pf = pf;
}
void sayHello() //该时刻下回调注册的函数
{
cout << (_obj->*_pf)(10);
}
private:
T* _obj;
pFunc _pf;
};
使用:
A a; //定义类A
B<A> b; //定义模板类b
b.regFunc(&a,&A::fun1); //注册A的func1函数指针
b.sayHello(); //显示调用sayHello,该函数可以在任意时刻下调用。