クラス定義中の構造体の初期化に問題があります。C++ 標準では、変数以外のクラス定義中に変数を定義できないことを知っていstatic const
ます。
私の場合、多くの構造体を初期化して C コードを生成しました。このコード (純粋な C コード) のすべての POD 変数はグローバルです。このPODをローカルにしたいので、このコードをクラスに含めようとしており、構造体の初期化の問題を解決する必要があります。生成された構造体の基本的な例は次のとおりです。
// generated C-code
struct G { int a; };
G GS = {0};
それをクラスに入れようとすると、次のように言えます。
class CL{
public:
struct G { int a; } GS = {0}; //error
};
そして、エラーがあります:
error C2059: syntax error : '{'
error C2334: unexpected token(s) preceding '{'; skipping apparent function body
Ok。いくつかの変更。
class CL{
public:
struct G { int a; } GS;
CL() { GS.a = 0; }
};
正常に動作します。しかし、私の場合、多くのフィールドを含む多くの構造があります。生成されたコードに多くの変更を加えたくありません。どうstatic const
ですか?
class CL{
public:
static const struct G { int a; } GS; //ok
static const struct GT { int a; } GST = {0}; //error
};
たぶん、すべての構造体をstatic const
構造体にして初期化できますか? どうすれば問題を解決できますか?