我很惊讶这不起作用:
union DlDatum
{
float mFloat;
s32 mInteger;
};
class DlDbE
{
public:
DlDbE( float f ) : mData.mFloat( f ) {};
private:
DlDatum mData;
};
有没有办法在 c++ 构造函数 mem-initializer 列表中初始化联合?
更新:答案是为联合创建构造函数。不知道可以这样做。这是我所做的:
union DlDatum
{
float mFloat;
s32 mInteger;
bool mBoolean;
u32 mSymbol;
u32 mObjIdx;
DlDatum( ) : mInteger( 0 ) {}
DlDatum( float f ) : mFloat( f ) {}
DlDatum( s32 i ) : mInteger( i ) {}
DlDatum( bool b ) : mBoolean( b ) {}
DlDatum( u32 s ) : mSymbol( s ) {} // this ctor should work for objIdx also
};
class DlDbE
{
public:
DlDbE() {}
DlDbE( float f ) : mData( f ) {}
DlDbE( u32 i ) : mData( i ) {}
DlDbE( bool b ) : mData( b ) {}
...etc..
private:
DlDatum mData;
};