错误:结构

时间:2017-05-22 10:51:47

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

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

  struct Data {};

  struct B {
    B(Data data) : m_data{data} {}
    Data m_data{};
  };
它抱怨道 错误:“数据”

的初始化程序太多

出了什么问题?

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

2 个答案:

答案 0 :(得分:3)

如果在较旧的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

答案 1 :(得分:0)

这是正确的c ++ 11,但也许你没有在C ++ 11模式下编译。

许多编译器仍默认为C ++ 98,您通常需要激活命令行开关(或IDE中的选项)以启用C ++ 11语法。

我已在您的代码中添加了一个小主编:

int main()
{
    Data d;
    B b(d);
}

...如果我在命令行中添加它,它会用gcc 5.x和clang 802(xcode 8版本)编译清理:

-std = C ++ 11