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

时间:2012-03-04 18:05:24

标签: c++ c++11

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

struct von
{
    std::string Name;
    unsigned int ID;
    std::vector<std::string> Checks;
};

是否应该像这样初始化:

    von v = {"",0,{}};

或者像这样:

    von v = {};

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

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

1 个答案:

答案 0 :(得分:1)

这根本不需要initializer_list,并且与C ++ 03完全一致。编辑:(好的,对于矢量的初始化,你需要C ++ 11)在结构或数组初始化中,所有未明确给定的值都是零初始化的,所以如果这是你想要的= {};会工作得很好。