在condializer和pod structures
The Issue
When compiling the following code in Visual C 2010, an error message is generated:
struct A
{
int foo;
双栏;
};
std :: array a1 =
//错误C2078:过多的初始化器
{
{0,0.1},
{2,3.4}
};
// 好的
std ::数组
要进一步说明此概念,请考虑一个自定义的汇总类型aarray,定义如下:
//无用户定义的构造函数, 构造Aarray { 数据[2]; //内部阵列 };struct A { int foo; double bar; }; std::array a1 = // error C2078: too many initializers { {0, 0.1}, {2, 3.4} }; // OK std::arrayConclusiona2 = {0.1, 2.3};
The use of outer braces in initializer lists is crucial for聚集物和POD结构,例如STD ::数组,因为这些类型没有用户定义的构造函数,并且内部数组是直接初始化的。另一方面,对于原始类型,可以省略外括号,因为原始值直接在骨料内初始初始化。通过了解这些情况之间的区别,程序员可以确保正确初始化并避免编译器错误。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3