[英]How to initialize a structure member of a union inside a structure in C++?
我想移植一個參數查找表,它是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 ..
.
.
}
任何幫助贊賞。
您可以使用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)),
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.