令人困惑的联盟构造

时间:2015-03-25 08:04:18

标签: c++

在下面的代码中:

union
{
float dollars;
int yens;
}price;

价格是匿名联盟的实例还是联盟本身的名称。它看起来像一个实例,但代码的作者说它是 工会的名称。

现在,第二个问题 - 假设这个联合是否嵌入在一个结构中 如下所示:

struct
{
char title[50];
char author[50];
union
{
float dollars;
int yens;
}price;
}book1;

访问 book1.dollars 是否有效?

1 个答案:

答案 0 :(得分:2)

1)这是一个匿名联盟的实例,作者错了。如果您使用typedef关键字(例如

)添加联合
typedef union
{
   float dollars;
   int yens;
} price;

,然后price将是一个引用联盟的类型名称。

2)不,你要使用book1.price.dollars

<强>更新 联合类型可以通过以下方式声明:

union price
{
   float dollars;
   int yens;
}; // here you see, there is no instance.

如果右括号和分号之间有一个标识符,那就是实例的名称。