如何复制匿名工会

时间:2016-02-06 01:32:13

标签: c++ copy-constructor unions

我在结构

中有一个匿名联合
struct A {
  union {
    char c;
    double d;
  };
  A(const A &a) {
    c = a.c;
    d = a.d;
  }
};

我想知道定义其复制构造函数的最佳方法是什么。 我们必须复制所有联盟字段吗?我想我们必须......?

1 个答案:

答案 0 :(得分:4)

请记住,一次只能有一个联合字段处于活动状态。要复制联合,您只需要复制它们中的任何一个。

一般来说,当使用这样的工会时,你会有某种&#34;标签&#34;字段跟踪哪个字段处于活动状态。然后,您可以在该标记上使用<body> // background-color is black <div id="abc"> ... </div> </body> <body> // background-color is red <div id="cde"> ... </div> </body> 语句来确定哪个字段是活动字段以及如何将其复制。

或者,考虑使用switch,它是一个类型安全的包装器,围绕一个固定数量类型的对象。