我有这样的结构: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