我想移植一个参数查找表,这是C到C ++中的结构数组。我读了几个问题,并且理解C ++中不允许使用C风格的struct初始化器。如何将其移植到C ++?
typedef struct {
char const *property;
int count;
} TYPE2;
typedef struct {
int Address;
char const *Name;
union
{
TYPE1 foo;
TYPE2 bar;
}u;
} PARAMS;
//Initialize table:
const PARAMS paramTbl[] =
{
{0x1000, "Param 1", {.bar = {"abc",0}}}, //So on ..
.
.
}
任何帮助表示赞赏。
答案 0 :(得分:2)
您可以使用struct / union构造函数初始化给定值。
struct PARAMS {
PARAMS(int address, const char *name, const TYPE1 &f) :
Address(address), Name(name), u(f)
{
}
PARAMS(int address, const char *name, const TYPE2 &b) :
Address(address), Name(name), u(b)
{
}
int Address;
char const *Name;
union union_name
{
union_name(const TYPE1 &f) : foo(f) {}
union_name(const TYPE2 &b) : bar(b) {}
TYPE1 foo;
TYPE2 bar;
}u;
};
const PARAMS paramTbl[] {
PARAMS(0x1000, "Param1", TYPE1("abc", 0)),
};