struct Something {
union {
float k;
int n;
};
bool isFloat;
bool operator==(const Something& mS)
{
if(isFloat != mS.isFloat) return false;
if(isFloat && mS.k == k) return true;
if(!isFloat && mS.n == n) return true;
}
};
我的Something::operator==
的实现似乎相当昂贵和复杂。在具有联合类型的类中检查相等性的唯一方法是这样吗?
还是有更好的方法可以避免分支/检查额外的变量?