读书人

Class里的函数指针赋值有关问题

发布时间: 2013-09-11 16:26:28 作者: rapoo

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))();
}

读书人网 >C++

热点推荐