私はC++で静的なマップを初期化する方法を検索し、このコードを発見された:静的データメンバを(宣言とは反対に)定義するときに "'static'を使用できないのはなぜですか?
struct A{
static map<int,int> create_map()
{
map<int,int> m;
m[1] = 2;
m[3] = 4;
m[5] = 6;
return m;
}
static const map<int,int> myMap;
};
const map<int,int> A:: myMap = A::create_map();
しかし、私は
const static map<int,int> A:: myMap = A::create_map();
コンパイラの苦情への最後の行を変更した場合:ではないかもしれない「静的」
それ以外の場合は、静的メンバーシップが矛盾することになります。 –
@BenVoigt、メンバーシップの静的な可能性はありません。冗長性があります。このように非静的メンバーを定義することはできません。 – Slava
@Slava:まあまあ、それは矛盾して冗長なので、それを禁止する2つの理由があります。しかし私は静的なリンケージを考えているとは思わない。 –