如何初始化本地联合变量?

时间:2013-04-24 10:16:54

标签: c++ unions local-variables initialization

我经常在这样的函数中定义联合:

union
{
 sometype A;
 othertype B;
}name;

然后四处使用它们:

name.A = smth;
name.B = smthelse;

虽然它在调试模式下工作,但在发布模式下,它告诉我联合是未初始化的,并且在某些联盟成员是指针的地方,它甚至崩溃。所以如何初始化它们?只需添加就足够了'='运算符?它不应该有默认构造函数吗?

1 个答案:

答案 0 :(得分:1)

来自here

  

您可以在同一语句中声明和初始化一个联合   指定括在括号中的表达式。表达是   评估并分配到工会的第一个领域。

所以,就像这样:

union NumericType
{
    int         iValue;
    long        lValue;  
    double      dValue;  
};

union NumericType Values = { 10 };   // iValue = 10

但更常见的是(很多人会说更好

union NumericType val;  // declaration
val.dValue = 3.1415;    // use union as a double

您收到错误,因为您似乎正在使用union,就好像它是struct :)

如果我错了,请纠正我,但请阅读here

相关问题