多数のユニオン クラス (union_a、union_b、...) があり、すべて同じデータ メンバーと異なるメンバー関数を持ちます。任意のクラスのオブジェクトを他のクラスのオブジェクトに割り当て、それを init の任意の ctor で使用できるようにしたいと考えています。「作業」共用体 union_z がメディエーターとして使用されます。VC ではすべて正常に動作します。GC では、最後の行に「エラー: 'union_a' から非スカラー型 'union_b' への変換が要求されました」が表示されます。
できれば助けてください、私は...
union union_z{int m;};
union union_a{
int m;
union_a(){}
union_a(union_z x){m = x.m;}
void operator=(union_z x){m = x.m;}
operator union_z(){return *(union_z *)this;}
};
union union_b{
int m;
union_b(){}
union_b(union_z x){m = x.m;}
void operator=(union_z x){m = x.m;}
operator union_z(){return *(union_z *)this;}
};
union_a a;
union_b b(a);
b = a;
union_b b1 = a; //error: conversion from ‘union_a’ to non-scalar type ‘union_b’ requested