2012-10-12 10 views
11

Ptrzebuję initializ statyczną const vector członek klasy ... Próbowałemjak initializ statyczną const vector klasy członka w C++ 11

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

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

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

dont pracy ....

Używam eclipse z mingw (mam włączone C++ 11)

+0

zdefiniowanych zmiennych statycznych wewnątrz klasy i nie zadania poza - –

Odpowiedz

7

Zadeklaruj swoje statyczne elementy w definicji klasy, ale zdefiniuj je na zewnątrz.

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

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

Wyjątkiem jest integralne typy

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

Wyjątek dla typów integralnych ma zastosowanie tylko wtedy, gdy wartości nigdy nie są używane przez ODR. – ildjarn

9

Zmienna statyczna inicjalizacji jest wykonywana poza klasy, na przykład:

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

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

Czy istnieje sposób zainicjowania 'const''' przy użyciu funkcji' static' member? – phoenix

Powiązane problemy