C++ C++;11正确的结构初始化

C++ C++;11正确的结构初始化,c++,c++11,C++,C++11,在C++11中具有如下结构: struct von { std::string Name; unsigned int ID; std::vector<std::string> Checks; }; 或者像这样: von v = {}; 这两种方法似乎都有效,但编译器警告后一个示例中的-Wmissing字段初始值设定项 编辑: 以下是我的编译器选项: g++ main.cpp -ansi -Wall -Wextra -Weffc++ -std=c++

在C++11中具有如下结构:

struct von
{
    std::string Name;
    unsigned int ID;
    std::vector<std::string> Checks;
};
或者像这样:

    von v = {};
这两种方法似乎都有效,但编译器警告后一个示例中的
-Wmissing字段初始值设定项

编辑:
以下是我的编译器选项:

g++ main.cpp -ansi -Wall -Wextra -Weffc++ -std=c++0x

我使用的是g++(Debian 4.6.2-12)4.6.2

这根本不需要初始值设定项列表,在C++03中工作得非常好。Edit:(好的,对于需要C++11的向量初始化)在结构或数组初始化中,所有未显式给定的值都是零初始化的,因此如果这是您想要的={};将很好地工作。

在您的示例中没有初始值设定项列表,只有列表初始化。最好的方法可能是
vonv{}von v{};还抱怨成员的初始值设定人丢失。这是一个-Wmissing字段初始值设定警告。嗯,你说得对。很遗憾你不能初始化一个自动变量<代码>von v{{},0,{}
是次好的选择。在零参数的情况下,我个人认为
-Wmissing field initializer
的警告过于迂腐。空initializer list案例的警告是错误的肯定。
g++ main.cpp -ansi -Wall -Wextra -Weffc++ -std=c++0x