错误:结构的初始值设定项太多



我正在尝试一些带有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} {}

在这里看到它。尽管较新版本的 GCC 将为您提供更有用的诊断以启用 c++11 模式。

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

-std=c++11

这是正确的 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

最新更新