c++ - 错误 : too many initializers for a struct

标签 c++ c++11 initializer-list

我正在尝试使用 c++11 编写一些代码,

  struct Data {};

  struct B {
    B(Data data) : m_data{data} {}
    Data m_data{};
  };

它提示 错误:“数据”的初始值设定项太多

怎么了?

[更新] 谢谢大家,我的工具链配置有问题。

最佳答案

如果您不在较旧的 GCC 编译器(默认为 c++03)中启用 c++11 模式或更高版本,则会收到该错误字符串。

main.cpp:4:31: error: too many initializers for 'Data'
B(Data data) : m_data{data} {}

查看here .尽管较新版本的 GCC 将为您提供更多有用的诊断以启用 c++11 模式。

因此,只需添加到您的编译器调用中:

-std=c++11

关于c++ - 错误 : too many initializers for a struct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44111014/

相关文章:

c++ - 任何/某些 C++ 编译器中是否有允许从 native (基本)类型继承的选项?

c++ - 具有单个参数的 std::min() 的实现是什么?

c++ - 无法在 cbegin 中定义 initializer_list

c++ - 如何检测通用 lambda 在 C++ 14 中是否不可编译?

c++ - 新的 C++ 返回语法是否受到限制?

c++ - 构造函数中的 std::initializer_list 转换

c++ - boost 单元测试运行荒谬的测试量

c++ - 这段代码不应该根据标准中的 12.8p2 编译吗?

c++ - 如何在子类和父类之间添加槽?

C++ 异常:内存位置 0x003DF4C0 处的 std::out_of_range