首页 新闻 会员 周边 捐助

存储函数指针的Vector 怎么又错误

0
[待解决问题]

#include<iostream>

#include <vector>

using namespace std;

#define DF(N) void N(void){ \  cout << "function" #N "called.." << endl;}

class Base { public:  DF(a);  DF(b);  DF(c);  DF(d); };

class X

{ public:

 void add(void (Base::* p)(void))  {      seg_ment.push_back(p);  }

 void remove(void (Base::*p)(void))  {   seg_ment.pop_back();  }

 void  run(int i)

 {   if(i > 0&& i < seg_ment.size())   {    (*(this->seg_ment[i]))(void);   }  } private:

 vector<void(Base::*)(void)> seg_ment;

};

DF(b); DF(c); DF(d);

int main() {  

X x;

 int i = 0;  

x.add(&Base::a);  

x.add(&Base::b);

 x.add(&Base::c);

 x.run(i);  

system("pause");  

return 0; }

dyhui1992的主页 dyhui1992 | 初学一级 | 园豆:4
提问于:2012-12-24 10:07
< >
分享
所有回答(2)
0
Launcher | 园豆:45050 (高人七级) | 2012-12-24 10:15
0

1 Base没有声明对象

2 而且Base的abcd成员函数也不是static属性的

解决上边任何一条应该都能解决问题。

不是很确定,楼主试一下。

jogger | 园豆:211 (菜鸟二级) | 2013-01-07 10:44
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册