我有這樣的結構:Struct->聯盟結構
struct foo {
int a;
union {
struct {
int b;
struct bar
{
int c;
int d;
} *aBar;
} in;
} u;
};
我如何需要聲明式酒吧的變量,在Visual C++?
我有這樣的結構:Struct->聯盟結構
struct foo {
int a;
union {
struct {
int b;
struct bar
{
int c;
int d;
} *aBar;
} in;
} u;
};
我如何需要聲明式酒吧的變量,在Visual C++?
當你聲明的結構是這樣的:
struct
{
int b;
} in;
您實際上是創建名稱爲in
的對象,有不願透露姓名的數據類型。這種數據類型將由編譯器內部命名,並取決於編譯器。上面給出的樣式並沒有聲明in
是一個類型,而是一個變量!
如果你想成爲一個類型,使用的方法給出:
// Approach 1
struct in{...};
// Approach 2
typedef struct {..} in; // in is now a type, because of `typedef`
如果你有編譯器,支持C++ 0x中,特別鍵入關鍵字decltype
,你可以用它對着第一樣式(這使得in
變量)。例如:
decltype(in) in_var;
in_var.b = 10;
由於阿賈伊,我解決了這個辦法:
foo *k;
decltype(k->u.in.aBar) j;
j->c = 1;
j->d = 1;
爲什麼有工會嗎?或者你打算以後再擴展它? – Pyrce
它的第三方代碼,我不這樣做 – EsteveBlanch