初始化结构中的数组的值

时间:2012-02-29 08:54:42

标签: c++ struct initialization

我有一个名为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 标志选项将无法使用。如何在不使用标志的情况下正确执行此操作。

1 个答案:

答案 0 :(得分:2)

它在警告中告诉你。尝试将-std=c++0x添加到您的g ++参数中。如果您希望能够在较旧的编译器上使用它,那么您就不能按照自己的方式使用初始化列表。

相反,您可以将member()更改为

member()
{
  months[0] = "January";
  months[1] = "February";
  ...//etc
}