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

011*_*110 10 c++ c++11

在C++ 11中有这样的结构:

struct von
{
    std::string Name;
    unsigned int ID;
    std::vector<std::string> Checks;
};
Run Code Online (Sandbox Code Playgroud)

它应该像这样初始化:

    von v = {"",0,{}};
Run Code Online (Sandbox Code Playgroud)

或者像这样:

    von v = {};
Run Code Online (Sandbox Code Playgroud)

两种方式似乎都有效,但编译器在后一个示例中警告-Wmissing-field-initializers.

编辑:这是我的编译器选项:g ++ main.cpp -ansi -Wall -Wextra -Weffc ++ -std = c ++ 0x.我正在使用g ++(Debian 4.6.2-12)4.6.2

coo*_*451 3

这根本不需要initializer_list 并且可以与C++03 完美配合。编辑:(好吧,对于向量的初始化,您需要 C++11)在结构体或数组初始化中,所有未显式给定的值均为零初始化,因此如果这就是您想要的 = {}; 会工作得很好。