簡體   English   中英

C ++:類中的靜態數組,大小未知

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM