1

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

union
{
 sometype A;
 othertype B;
}name;

然后像这样到处使用它们:

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

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

4

1 回答 1

1

这里开始

您可以通过分配用大括号括起来的表达式在同一语句中声明和初始化联合。该表达式被评估并分配给联合的第一个字段。

所以,像这样:

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

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

如果我错了,请纠正我,但请阅读这里,例如。

于 2013-04-24T10:22:28.037 回答