我有一个名为member
的结构。在member
内,我有一个名为std::string
的{{1}}数组,我想将其初始化为默认值。这就是我目前的做法:
months
但是,每当我编译时,都会收到此警告消息:
template <typenameT>
struct member
{
std::string months[12];
std::string name;
T hours_worked[12];
T dues[12];
member() : months{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"} {};
};
如何正确初始化并摆脱此错误消息?
修改
我应该更清楚地提出我的问题。我需要在较旧的编译器上编译此程序,warning: extended initializer lists only available with -std=c++0x or -std=gnu++0x
标志选项将无法使用。如何在不使用标志的情况下正确执行此操作。
答案 0 :(得分:2)
它在警告中告诉你。尝试将-std=c++0x
添加到您的g ++参数中。如果您希望能够在较旧的编译器上使用它,那么您就不能按照自己的方式使用初始化列表。
相反,您可以将member()更改为
member()
{
months[0] = "January";
months[1] = "February";
...//etc
}