我经常在这样的函数中定义联合:
union
{
sometype A;
othertype B;
}name;
然后像这样到处使用它们:
name.A = smth;
name.B = smthelse;
虽然它在调试模式下工作,但在发布模式下它告诉我联合未初始化,并且在联合成员是指针的某些地方,它甚至崩溃。那么我该如何初始化它们?只需添加'='就足够了运算符?它不应该有一个默认的构造函数吗?
我经常在这样的函数中定义联合:
union
{
sometype A;
othertype B;
}name;
然后像这样到处使用它们:
name.A = smth;
name.B = smthelse;
虽然它在调试模式下工作,但在发布模式下它告诉我联合未初始化,并且在联合成员是指针的某些地方,它甚至崩溃。那么我该如何初始化它们?只需添加'='就足够了运算符?它不应该有一个默认的构造函数吗?
从这里开始,
您可以通过分配用大括号括起来的表达式在同一语句中声明和初始化联合。该表达式被评估并分配给联合的第一个字段。
所以,像这样:
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
:)
如果我错了,请纠正我,但请阅读这里,例如。