【发布时间】:2014-02-04 19:01:20
【问题描述】:
第一:
int k[] ={1,2,3,4,5};
第二:
struct slk
{
int k[] ={1,2,3,4,5};
};
对于这两个语句,为什么第一个通过编译而第二个给我
错误:'int [0]' 的初始化程序太多。如果我设置 k[5],编译将通过;
这个错误信息是什么意思?注意:在 GNU GCC 版本 4.7.2 上测试的代码
【问题讨论】:
-
成员的内联初始化是一个完全不同的球赛。要获取第一个示例的直接等效项,您应该在 成员初始化列表 中初始化成员(尽管在有限的情况下您可以像在第二个示例中那样内联)。
-
它似乎适用于
int k[5] = {1,2,3,4,5};,但我无法解释原因。 -
@ValarDohaeris,这更像是“它必须有一定的尺寸才能在课堂上做到这一点”。 IIRC,该标准有明确的规则。
标签: c++ arrays c++11 struct initialization