不可以直接通过函数指针 来调用类的非静态成员函数
下面的例子将报错
#include <iostream>
using namespace std;
/*不可以直接通过函数指针来调用类的非静态成员函数*/
typedef void (*PFN)();
class A{
public:
void foo(){run(func);}
private:
void run(PFN pfn){pfn();}
void func(){cout<<"run"<<endl;}
};
int main(void)
{
A a;
a.foo();
return 0;
}
解决方法是将func 声明为static或者作为全局函数