Visual c++ 结构->;联合结构
我有这个结构:Visual c++ 结构->;联合结构,visual-c++,struct,unions,Visual C++,Struct,Unions,我有这个结构: struct foo { int a; union { struct { int b; struct bar { int c; int d; } *aBar; } in; } u; }; 我如何声明一个类型的变量,在VisualC++中?< /p> 当你声明这样的结构: struct { int b;
struct foo {
int a;
union {
struct {
int b;
struct bar
{
int c;
int d;
} *aBar;
} in;
} u;
};
<>我如何声明一个类型的变量,在VisualC++中?< /p> 当你声明这样的结构:
struct
{
int b;
} 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;
谢谢Ajay,我就是这样解决的:
foo *k;
decltype(k->u.in.aBar) j;
j->c = 1;
j->d = 1;
为什么会有工会?或者你打算以后扩展它?这是第三方代码,我不这么认为