我经常在这样的函数中定义联合:
union
{
sometype A;
othertype B;
}name;
然后四处使用它们:
name.A = smth;
name.B = smthelse;
虽然它在调试模式下工作,但在发布模式下,它告诉我联合是未初始化的,并且在某些联盟成员是指针的地方,它甚至崩溃。所以如何初始化它们?只需添加就足够了'='运算符?它不应该有默认构造函数吗?
答案 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。