'int [0]'c ++的初始化程序太多了

cpp*_*hon 25 c++ arrays struct initialization c++11

第一:

int k[] ={1,2,3,4,5};
Run Code Online (Sandbox Code Playgroud)

第二:

struct slk
{
    int k[] ={1,2,3,4,5};
};
Run Code Online (Sandbox Code Playgroud)

对于这两个陈述,为什么第一个通过编译但第二个给我

错误:'int [0]'的初始化程序太多.如果我设置k [5],则编译将通过;

这个错误信息意味着什么?注意:在GNU GCC版本4.7.2上测试的代码

jto*_*der 31

在C++ 11中,允许使用类内成员初始值设定项,但基本上与在成员初始化列表中初始化相同.因此,必须明确说明数组的大小.

斯特劳斯在他的网站的简短说明这里.

错误消息表示您为长度为0的数组提供了太多项,这是int []在该上下文中的计算结果.