普通函数,可以通过如下方法调用
void FA(){};  
====
void (*lpfnFA)();
lpfnFA=FA;
lpfnFA();但是对于类函数void CA::FA()上述方法失效,编译提示CA::FA和lpfnFA指针类型不同。求解决办法。

解决方案 »

  1.   

    非静态成员函数的类型跟全局函数不一样的,多个隐含的this指针参数。
      

  2.   

    void (CA::*p)();
    p = &CA::FA;CA ca;
    (ca.*p)();注意非静态成员函数(及指向它的指针)都必须从一位对象上调用,可以认为对于非静态成员函数来说,没有对象的时候,它是没什么意义的。
      

  3.   

    如果是静态成员函数,就无所谓了,跟全局函数区别不大,当然,必须是public的,否则外界都访问不了。
      

  4.   

    感谢楼上回复,但是还有些疑惑主要是在类中如何调用其他本类函数指针,这时候无法生成实例。最初遇到这个在BTree里,里面的递归遍历调用Visit(),如果能使用类函数指针就可以大大减小代码量。
      

  5.   

    调本类的,用 (this->*pFun)();