gpt4 book ai didi

c++ - 检查 union 平等

转载 作者:太空狗 更新时间:2023-10-29 21:00:45 27 4
gpt4 key购买 nike

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== 的实现似乎相当昂贵且令人费解。这是检查具有 union 类型的类是否相等的唯一方法吗?

或者是否有更好的方法来避免分支/检查额外的变量?

最佳答案

bool operator==(const Something& mS)
{
if (isFloat != mS.isFloat)
{
return false;
}
else if (isFloat)
{
return mS.k == k;
}
else
{
return mS.n == n;
}
}

清晰且可调试,检查次数最少。您希望有一个构造函数和/或设置方法来确保 isFloat 始终正确。

关于c++ - 检查 union 平等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21096103/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com