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

标签 c++ arrays c++11 struct initialization

第一:

int k[] ={1,2,3,4,5};

第二:

struct slk
{
    int k[] ={1,2,3,4,5};
};

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

error:too many initializers for 'int [0]'. the compilation would passed if I set k[5];

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

最佳答案

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

Stroustrup 在他的网站 here 上有一个简短的解释。 .

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

关于c++ - 'int [0]' c++ 的初始化程序太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21152171/

相关文章:

java - 数组输出再重复一次就应该了

c++ - g++ 上 constexpr 上下文中成员指针的 static_cast

c++ - constexpr 静态数据成员给出 undefined reference 错误

c++ - C++ 世界中是否有特定于线程的时钟?

c++ - 编译器如何解析函数?

Java递归: Determine how many numbers in an array is greater than index 1

arrays - 如何计算具有一定高度的二叉搜索树的数组大小?

c++ - 如何对 BSD 套接字进行单元测试

c++ - 如何在 MacOS 上安装 Boost?

c++ - 在构造函数上传递参数或在每个方法上传递它们