定义一个函数表类,包含一个 vector 成员 funcList
。
问题是,如何定义函数指针? 如下所示,f
即为函数指针。
vector<void (*)()> funcList;
void add(void (*f)() );
#include <iostream>
#include <vector>
using namespace std;
#define DF(N) void N() { \
cout << "function " #N " called..." << endl; }
DF(a); DF(b); DF(c); DF(d); DF(e); DF(f); DF(g);
class FuncTable {
vector<void (*)()> funcList;
public:
FuncTable() {}
void add(void (*f)() ) {
funcList.push_back(f);
}
void remove() {
funcList.pop_back();
}
void run(){
for (void (*f)(): funcList) {
(*f)();
}
}
};
int main() {
FuncTable ft;
ft.add(a);
ft.add(b);
ft.add(c);
ft.add(d);
ft.add(e);
ft.add(f);
ft.add(g);
ft.run();
ft.remove();
ft.remove();
cout << endl;
ft.run();
return 0;
}