對於下面的C++代碼段:用未指定大小定義的靜態數組,空括號?
class Foo {
int a[]; // no error
};
int a[]; // error: storage size of 'a' isn't known
void bar() {
int a[]; // error: storage size of 'a' isn't known
}
爲什麼不成員變量引起的錯誤太?這個成員變量的含義是什麼?
我使用gcc版本3.4.5(mingw-vista特別)通過CodeBlocks 8.02。
在Visual Studio速成2008 - 微軟(R)C/C++優化編譯器15.00.30729.01爲80×86,我得到了以下信息:
class Foo {
int a[]; // warning C4200: nonstandard extension used : zero-sized array in struct/union - Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
};
int a[];
void bar() {
int a[]; // error C2133: 'a' : unknown size
}
現在,這需要一定的交代了。
標題提到「靜態數組」。這些「靜態數組」在你的問題在哪裏?我沒有看到任何「靜態數組」的引用。 – AnT 2010-04-27 00:11:18
我的意思是靜態分配數組。如果您認爲有必要,請隨時編輯該問題。謝謝。 – 2010-05-01 09:01:48