error: too many initializers for a struct

error: too many initializers for a struct

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

  struct Data {};

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

它抱怨 错误:'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++11,但也许你没有在 C++11 模式下编译。

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

我已经在你的代码中添加了一个小的主程序:

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

... 如果我在命令行中添加:

-std=c++11