我有一堆联合类(union_a、union_b、...),它们都具有相同的数据成员和不同的成员函数。我希望能够将任何类的对象分配给任何其他类的对象,并在任何 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