2017-09-16 208 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};