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

标签 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

最佳答案

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

关于C++11 正确的结构初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9557464/

相关文章:

c++ - 二进制搜索 - 代码编译和运行后不显示输出

C++ std::stoi 异常:无效参数

c++ - 在 C++ 中使用 float ( double )丢失精度

c++ - 部分模板特化的问题

c++ - 可变参数模板与类中的函数参数数量相同

c++ - 如何在 Linux 中编译 Box2D?

c++ - QGraphicsView菜鸟问题

c++ - 为什么要使用虚拟基类?

c++ - 在 C++11 中,string::c_str() 指向的数组中的字符可以改变吗?

c++ - 为什么在 std::for_each() 返回时调用转换运算符?