相关疑难解决方法(0)

我可以在mem-initializer中初始化一个联合吗?

我很惊讶这不起作用:

union DlDatum
{
   float  mFloat;
   s32    mInteger;
};

class DlDbE
{
public:
   DlDbE( float f ) : mData.mFloat( f ) {};
private:
   DlDatum mData;
};
Run Code Online (Sandbox Code Playgroud)

有没有办法在c ++构造函数mem-initializer列表中初始化union?

更新:答案是为union创建构造函数.不知道可以做到的.这是我做的:

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 ) …
Run Code Online (Sandbox Code Playgroud)

c++

9
推荐指数
2
解决办法
6837
查看次数

标签 统计

c++ ×1