首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-09-11 
Class里的函数指针赋值问题#include iostreamusing namespace stdclass myClass{public:void init()vo

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

热点排行