我很驚訝這不起作用:我可以初始化mem初始化程序中的聯合?
union DlDatum
{
float mFloat;
s32 mInteger;
};
class DlDbE
{
public:
DlDbE(float f) : mData.mFloat(f) {};
private:
DlDatum mData;
};
有沒有辦法在一個C++構造MEM-初始化列表來初始化工會?
更新:答案是爲聯合創建構造函數。不知道可以做到。下面是我做的:
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;
};
http://stackoverflow.com/questions/321351/initializing-a-union-with-a-non-trivial-constructor – Mysticial