#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; }
1 Base没有声明对象
2 而且Base的abcd成员函数也不是static属性的
解决上边任何一条应该都能解决问题。
不是很确定,楼主试一下。