2017-09-16 1 views
-2

Könnte mir jemand sagen, wie Vektor der Funktion pointer.`initialisieren Vektor von Funktionszeiger

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}; 

zu initialisieren. In C++ 98 können Sie nicht so initialisieren.

bitte geben Sie mir ein einfaches Beispiel.

+0

auf Ihrem Compiler Je, müssen Sie C ermöglichen, ++ 11 oder C++ 14 mit einem entsprechenden Compiler-Optionsschalter. – StoryTeller

+0

Warum versuchen Sie nicht, die Methode puah_back() zum Hinzufügen von Funktionszeigern zu verwenden? – MKR

Antwort

2

Sie dürfen keine Initialisierungslisten vor C++ 11 verwenden. Im Folgenden wird arbeiten

#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

Sie beste Wette ist, um ein Array zu verwenden:

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