以下の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
}
メンバー変数もエラーを引き起こさないのはなぜですか?そして、このメンバー変数の意味は何ですか?
CodeBlocks 8.02からgccバージョン3.4.5(mingw-vista special)を使用しています。
Visual Studio Express 2008-80x86用のMicrosoft(R)C / C ++最適化コンパイラ15.00.30729.01で、次のメッセージが表示されました。
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
}
さて、これにもいくつかの説明が必要です。