C++ 初始化结构中数组的值
我有一个名为C++ 初始化结构中数组的值,c++,struct,initialization,C++,Struct,Initialization,我有一个名为member的结构。在member中,我有一个名为months的std::string数组,我想初始化为默认值。我现在就是这样做的: template <typenameT> struct member
member
的结构。在member
中,我有一个名为months
的std::string
数组,我想初始化为默认值。我现在就是这样做的:
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"} {};
};
如何正确地进行初始化并消除此错误消息
编辑:
我当然应该把我的问题说得更清楚。我需要在较旧的编译器上编译此程序,
-std=c++0x
标志选项对我不可用。如何在不使用标志的情况下正确执行此操作。它在警告中告诉您。尝试将-std=c++0x
添加到g++参数中。如果您希望能够在较旧的编译器上使用它,那么您就不能像现在这样使用initialiser列表
相反,您可以将member()更改为
member()
{
months[0] = "January";
months[1] = "February";
...//etc
}
它在警告中告诉你。尝试将
-std=c++0x
添加到g++参数中。如果您希望能够在较旧的编译器上使用它,那么您就不能像现在这样使用initialiser列表
相反,您可以将member()更改为
member()
{
months[0] = "January";
months[1] = "February";
...//etc
}
它确切地告诉您要做什么,请使用编译标志。@Als我希望不必设置此标志。似乎我的初始化操作不正确。我必须在另一个编译器上运行它,而
-std=c++0x
不可用。我认为这是c++11的特性。您的编译器必须支持C++11才能使此代码正常工作。它确切地告诉您要做什么,请使用-std=C++0x
编译标志。@Als我希望不必设置此标志。似乎我的初始化操作不正确。我必须在另一个编译器上运行它,而-std=c++0x
不可用。我认为这是c++11的特性。您的编译器必须支持C++11才能运行此代码。我不希望必须设置此标志。似乎我的初始化操作不正确。我必须在另一个编译器上运行此命令,其中-std=c++0x
不可用。我需要了解如何执行此操作的语法。我希望不必设置此标志。似乎我的初始化操作不正确。我必须在另一个编译器上运行它,而-std=c++0x
不可用。我需要的是有关如何执行此操作的语法。