类的静态成员函数采用与一般函数指针相同的调用方式,而受this指针的影响,类的非静态成员函数与一般函数指针是不兼容的。指向类的非静态成员函数的指针,在声明时就需要添加类名。
/*指向类的非静态成员函数的指针*/typedef int(CA::*pClassFun)(int, int);
/*指向一般函数的指针*/ typedef int(*pGeneralFun)(int, int);
/*类外部的接口函数,实现对类的非静态成员函数的封装*/ int Result(CA* pA, pClassFun fun, int a, int b) { return (pA->*fun)(a, b); }
/*类内部的接口函数,实现对类的非静态成员函数的封装*/ int Result(pClassFun fun, int a, int b) { return (this->*fun)(a, b); }