我在类定义期间遇到结构初始化问题。我知道 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
好的。一些变化。
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
结构并初始化它们?我怎样才能解决我的问题?