2016-11-04 22 views
1

私はクラス内にconst std :: mapを持つつもりです。このデータ構造を他のインスタンスで再利用することは静的にしたいと思います。しかし、我々はconstの整数型を持つ静的メンバのため、クラス初期化子を提供することができ、 がconstexprsある静的メンバのためにそうしなければならないクラス定義内のstatic constメンバmap <>の初期化

:残念ながら、それはコンパイルされませんし、私はCPPプライマーで見られることですリテラルタイプの(Primer 5th)。

私のコードされたが、次のようになります。だから、

clase worker { 
//..... 
private : 
//..... 
static map<string, string> const map_{...}; 
} 

、そこには、私たちは労働者とmap_の数十が大きい持っていると仮定して、このデータ構造を再利用するOOP技法ですか?

答えて

2

あなたのクラスのメンバーのためのC++構文の関連部分とちょうど慣れていないようです:

class worker 
{ 
private: 
    static const std::map<std::string, std::string> m_; 
}; 

const std::map<std::string, std::string> worker::m_ = { 
    { "foo", "bar" }, 
    { "abc", "def" }, 
}; 

それを含む翻訳単位だけに一度表示されるように、メンバーの定義は、通常、別々の.cppファイルに住んでいますリンク。

関連する問題