2017-09-16 143 views
-2

有人能告诉我如何初始化函数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则无法初始化这样。

请给我一个简单的例子。

+0

取决于你的编译器,你需要使ç ++ 11或C与适当的编译器选项开关++ 14。 – StoryTeller

+0

你为什么不尝试使用puah_back()方法添加函数指针? – MKR

回答

2

您不能在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; 
} 
0

C++ 98:

funcs.push_back(a); 
funcs.push_back(b); 
funcs.push_back(c); 
funcs.push_back(d); 
0

您最好的选择是使用数组:

void (*funcs[])() = {a, b, c, d};