[英]C++: static array inside class having unknown size
我對此並不熟悉。 我在谷歌搜索它但沒有找到我的答案。 所以,發布我的問題。 剛試過以下程序:
#include <iostream>
class test
{
static char a[];
static int b[];
};
int main()
{
test t;
}
它在MSVS 2010和g ++ 4.8.1上沒有任何警告就編譯好了。 它在C ++ 14編譯器中編譯也很好。 (請參閱此處的現場演示。 )那么,C ++標准在哪里說到這一點? 如果我從測試類中的char數組的聲明中刪除static關鍵字,編譯器會給出錯誤ISO C++ forbids zero size array
當我在MSVS 2010編譯器中的g ++& /Za
選項中使用-pedantic-errors
命令行選項時它會說error C2133: 'test::a' : unknown size
。 所以,我的問題是:
1)使用未知大小的靜態數組有什么用?
2)我如何稍后指定它們的大小並訪問該數組元素? 我真的很困惑。
3)為什么刪除靜態關鍵字會導致編譯錯誤?
如果有人用簡單的例子解釋它會更好。
謝謝。
編譯器不關心大小。 它只是靜態字段的聲明,所以告訴它你有一個數組就足夠了。 此時尺寸無關緊要。
此時您只有靜態字段的聲明。 你永遠不會使用那些數組,編譯器是寬容的...它不會抱怨。
但是,如果你想使用它們,你需要一個定義 。 如果省略那里的大小,您將收到之前看到的類似錯誤消息。
沒有任何特別的事情發生。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.