联盟测试了当前正在使用的成员

Ale*_* D. 8 c++ variables comparison members unions

工会是否有控制结构来测试当前正在使用哪个成员(或者它是否有任何成员)?我问这个是因为未定义的行为在你的程序中永远不是一件好事.

Luc*_*ore 12

不,没有现成的这种机制.你必须自己照顾好自己.通常的方法是包裹unionstruct:

struct MyUnion
{
   int whichMember;
   union {
      //whatever
   } actualUnion;
};
Run Code Online (Sandbox Code Playgroud)

所以你有MyUnion x;并且x.whichMember告诉你哪个领域x.actualUnion正在使用(你必须实现这个功能).

  • +1:这种类型的结构通常称为"区分联合"或"标记联合". (3认同)