初始化函数指针的矢量
问题描述:
有人能告诉我如何初始化函数pointer.`初始化函数指针的矢量
void a(){cout << "godzilla_1";}
void b(){cout << "godzilla_2";}
void c(){cout << "godzilla_3";}
void d(){cout << "godzilla_4";}
vector<void(*)()> funcs = {a, b, c, d};
这给了我一个错误的向量。在C++ 98则无法初始化这样。
请给我一个简单的例子。
答
您不能在C++ 11之前使用初始化列表。下面的工作
#include <iostream>
#include <vector>
void a(){std::cout << "godzilla_1";}
void b(){std::cout << "godzilla_2";}
void c(){std::cout << "godzilla_3";}
void d(){std::cout << "godzilla_4";}
int main() {
std::vector<void(*)()> funcs;
funcs.push_back(a);
funcs.push_back(b);
funcs.push_back(c);
funcs.push_back(d);
funcs.front()();
return 0;
}
答
C++ 98:
funcs.push_back(a);
funcs.push_back(b);
funcs.push_back(c);
funcs.push_back(d);
答
您最好的选择是使用数组:
void (*funcs[])() = {a, b, c, d};
取决于你的编译器,你需要使ç ++ 11或C与适当的编译器选项开关++ 14。 – StoryTeller
你为什么不尝试使用puah_back()方法添加函数指针? – MKR