2012-08-25 34 views
2

我在我的类中的成员像这样定义我的头文件中:如何初始化静态常量矢量

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。任何想法如何我可以初始化这个向量?使用数组不是一个选项顺便说一句。

回答

4

编写一个函数,返回一个vector<note_name>并填入适当的值,并使用该函数初始化noteMap。这将始终有效;有关初始化程序的更多信息,可以提出更好的解决方案。或者,如果您有C++ 11,则可以使用初始化程序列表,如示例中所示。

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