- 类成员函数的函数指针需要加上命名空间:int (A:: *op)(int) = NULL;
- 获取函数指针时需要加上&命名空间:op = &A::sub;
- 使用时需要通过类的对象或指针进行调用:(this->*op)(num);
class A {
public:
int add(int num) { return num + 1; }
int sub(int num) { return num - 1; }
int func(int num) {
int (A:: *op)(int) = NULL;
if (num > 0) {
op = &A::add;
}
else {
op = &A::sub;
}
return (this->*op)(num);
}
};
int main()
{
A a;
std::cout << a.func(2) << std::endl; // 3
std::cout << a.func(-2) << std::endl; // -3
return 0;
}



