gpt4 book ai didi

C++ “invalid comparator” 取反结果时运算符重载错误

转载 作者:行者123 更新时间:2023-11-28 02:14:08 25 4
gpt4 key购买 nike

我遇到了一个关于运算符重载的非常奇怪的问题。下面的函数在 if 分支之外工作正常。当我试图否定比较结果时,我总是得到“无效比较器”错误。否定使用!不起作用,与三元运算符相同。为什么会这样?

bool operator<(const Team& firstTeam, const Team& secondTeam)
{
if (firstTeam.getId() > 8) {
return !( firstTeam.getId() < secondTeam.getId());
}
return firstTeam.getId() < secondTeam.getId();
}

最佳答案

假设有团队a ID 9 和团队 b ID 为 7,然后是 b < a (在 if 之外)和 a < b (inside if) 都为真

正确的比较器应该定义 strict weak ordering

不是 100% 清楚您要实现的目标,但以下代码将定义正确的严格弱排序

bool operator<(const Team& firstTeam, const Team& secondTeam)
{
if (firstTeam.getId() > 8 && secondTeam.getId() > 8) {
return firstTeam.getId() > secondTeam.getId(); // note > instead of <
}
return firstTeam.getId() < secondTeam.getId();
}

关于C++ “invalid comparator” 取反结果时运算符重载错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34571192/

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