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
我正在尝试使用 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