1
我有一堆聯合類(union_a,union_b,...),全部使用相同的數據成員和不同的成員函數。 我希望能夠將任何類的對象分配給任何其他類的對象,並且 將它用於任何ctor for init。 「工作」聯合union_z用作中介。 在VC中一切正常。 在GC中,最後一行得到「錯誤:從'union_a'轉換爲非標量類型'union_b'requested」。不同對象類型之間的C++賦值
幫助,如果你能我,我...
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
兩個*隱式*用戶定義的轉換,對嗎? 'union_b b1 = static_cast(a);'工作。 –
jrok
2013-04-24 17:42:14
您可能會添加相關段落:[dcl.init]/17-6-1 – dyp 2013-04-24 17:43:03
@jrok是的。沒有明確的轉換可以成爲隱式轉換的一部分。 – 2013-04-24 17:54:56