web-dev-qa-db-ja.com

c ++ 11のクラスメンバーである静的constベクトルを初期化するにはどうすればよいですか?

クラスメンバーである静的constベクトルを初期化する必要があります。

私が試してみました:

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

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

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

ただし、これらはいずれも機能しません。

Eclipseをmingwで使用しています。 (c ++ 11を有効にしました)

18
user1740587

静的変数の初期化は、次のようにクラスの外部で行われます。

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

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

クラス定義で静的メンバーを宣言しますが、外部で定義します。

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

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

これの例外は整数型です、

class MyClass {
public:
    // declaration and definition
    static const int MAX_BURRITOS = 5;
};
10
Dietrich Epp