可以在c ++中实例化匿名联合吗?

时间:2017-12-07 11:59:38

标签: c++ c++11 unions

我有这段代码:

class test {
  private:
  union {
    double x;
    std::vector<double> y;
  } amIValid;
};

我想知道联合实例amIValid是否有效?

1 个答案:

答案 0 :(得分:2)

可以在C ++中实例化未命名的联合

union { int i; double d; } my_thing;
my_thing.i = 3;
// etc.

匿名联盟是一个名为not instantiated (scroll down)的未命名联盟。您可以直接访问其成员:

union { int i; double d; };
i = 3;
// etc.

因此标题中问题的答案是匿名联合不能被实例化,因为实例化它意味着它不是匿名联盟。