我的头文件中有一个像我这样定义的成员:
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。
答案 0 :(得分:4)
编写一个函数,返回填充了适当值的vector<note_name>
,并使用该函数初始化noteMap
。这将永远有效;有关初始化器的更多信息,可能会提出更好的解决方案。或者,如果你有C ++ 11,你可以使用初始化列表,如例子所示。
或者,使用TR1或Boost或C ++ 11,将vector
更改为array<note_name>
。 array
模板支持聚合初始化。