类内部的静态数组大小未知

C++: static array inside class having unknown size

本文关键字:未知 数组 静态 内部      更新时间:2023-10-16

我不熟悉这个。我在谷歌上搜索了一下,但没有找到答案。所以,把我的问题贴出来。刚才试了下面的程序:

#include <iostream>
class test
{
    static char a[];
    static int b[];
};
int main()
{
    test t;
}

在msvs2010 &g++ 4.8.1。它在c++ 14编译器中也可以很好地编译。(点击这里查看现场演示。)那么,c++标准是怎么说的呢?如果我从测试类的char数组声明中删除静态关键字,当我在g++ &amp中使用-pedantic-errors命令行选项时,编译器会给出一个错误ISO C++ forbids zero size array;/Za选项在MSVS 2010编译器它说error C2133: 'test::a' : unknown size。所以,我的问题是:

1)未知大小静态数组的用途是什么?

2)我以后如何指定它们的大小&访问数组元素?我真的很困惑。

3)为什么删除static关键字会导致编译错误?

如果有人能用简单的例子来解释就更好了。

谢谢。

编译器不关心大小。它只是静态字段的声明,告诉它你有一个数组就足够了。在这一点上大小不重要。

在这一点上,你只有一个静态字段的声明。你永远不会使用这些数组,编译器是允许的…它不会抱怨的。 如果你想使用它们,你需要一个定义。如果您忽略了这里的大小,您将得到与前面看到的类似的错误消息。

没什么特别的