Class里的函数指针赋值问题
#include <iostream>
using namespace std;
class myClass
{
public:
void init();
void (*pfun)();//函数指针
void print();
};
void myClass::print()
{
cout<<"hello"<<endl;
}
void myClass::init()
{
pfun = print;//函数指针赋值报错
}
int main(int argc, char *argv[])
{
myClass s;
s.init();
s.pfun();//函数指针调用
return 0;
}
函数指针赋值报错 error: argument of type `void (myClass::)()' does not match `void (*)()'
[解决办法]
你一定要将它作为成员,就只能这样了:
#include <iostream>
using namespace std;
class myClass {
public:
void init();
void (myClass::*pfun)();
void print();
};
void myClass::print() {
cout<<"hello"<<endl;
}
void myClass::init() {
pfun = &myClass::print;
}
int main(int argc, char *argv[]) {
myClass s;
s.init();
(s.*(s.pfun))();
}