如何初始化静态const向量

时间:2012-08-25 15:18:49

标签: c++ vector static initialization const

我的头文件中有一个像我这样定义的成员:

static const vector<note_name> noteMap;

在我的源文件中,我想为向量赋值,所以我尝试了:

const vector<note_name> AppSettings::noteMap = {...}

但我收到一个错误:Non-aggregate type 'const vector<note_name>' cannot be initialized with an initializer list。我有什么想法可以初始化这个向量?使用数组不是一个选项btw。

1 个答案:

答案 0 :(得分:4)

编写一个函数,返回填充了适当值的vector<note_name>,并使用该函数初始化noteMap。这将永远有效;有关初始化器的更多信息,可能会提出更好的解决方案。或者,如果你有C ++ 11,你可以使用初始化列表,如例子所示。

或者,使用TR1或Boost或C ++ 11,将vector更改为array<note_name>array模板支持聚合初始化。

相关问题