私はこの宣言を使用しようとしましたが、Visual Studio 2012 または CodeBlocks (GCC を使用) のどちらでもビルドされません。
( http://netghost.narod.ru/gff2/graphics/summary/fli.htmから)
typedef struct _ColormapChunk
{
CHUNKHEADER Header; /* Header for this chunk */
WORD NumberOfElements; /* Number of color elements in map */
struct _ColorElement /* Color element (one per NumberOfElements) */
{
BYTE SkipCount; /* Color index skip count */
BYTE ColorCount; /* Number of colors in this element */
struct _ColorComponent /* Color component (one /'ColorCount') */
{
BYTE Red; /* Red component color */
BYTE Green; /* Green component color */
BYTE Blue; /* Blue component color */
} ColorComponents[ColorCount];
} ColorElements[NumberOfElements];
} COLORMAPCHUNK;
Visual Studio: エラー C2327: '_ColormapChunk::_ColorElement::ColorCount': 型名、静的、または列挙子ではありません
CodeBlocks: エラー: 非静的データ メンバ '_ColormapChunk::_ColorElement::ColorCount' の無効な使用
これらの質問については、C++ 11 で可能なことが説明されています。
クラスで非 const 静的メンバーまたは静的配列を初期化できないのはなぜですか?
別のメンバーを宣言するときに、あるメンバーのサイズを使用できますか?
そのため、CodeBlocks でオプションにチェックを入れました:
g++ を C++11 ISO 言語標準に準拠させる [-std=c++11]
VS ではそのようなオプションが見つかりませんでした。CodeBlocks ではまだコンパイルされていません。
この宣言はそのまま使用できますか、それとも変更が必要ですか? もしそうなら、どれですか?