2012-10-12 6 views
11

ich ein statischen const Vektor Teilnehmern, INITIALIZ brauche ... Ich habewie ein statisches const Vektorklasse Mitglied in c INITIALIZ ++ 11

versucht
static const vector<string> vr ({"2", "3", "4"}); 

static const vector<string> vr = {"2", "3", "4"}; 

static const vector<string> vr {"2", "3", "4"}; 

sie nicht arbeiten ....

Ich verwende Eclipse mit Mingw (ich habe C++ 11 aktiviert)

+0

definierten statischen Variablen innerhalb der Klasse und nicht außerhalb Zuordnung - –

Antwort

7

Deklarieren Sie Ihre statischen Member in Ihrer Klassendefinition, aber definieren Sie sie außerhalb.

class MyClass { 
public: 
    // declaration 
    static const std::vector<std::string> vec; 
}; 

// definition 
const std::vector<std::string> MyClass::vec = ...; 

Die Ausnahme ist integral Typen,

class MyClass { 
public: 
    // declaration and definition 
    static const int MAX_BURRITOS = 5; 
}; 
+0

Die Ausnahme für ganzzahlige Typen gilt nur, wenn die Werte niemals ODR-verwendet werden. – ildjarn

9

Statische Variableninitialisierung außerhalb der Klasse durchgeführt wird, wie folgt aus:

class Example 
{ 
    static const vector<string> vr; 
    // ... 
}; 

const vector<string> Example :: vr ({"hello", "world"}); 
+0

Gibt es eine Möglichkeit, einen 'const'' Vektor' mit einer 'statischen' Elementfunktion zu initialisieren? – phoenix

Verwandte Themen