[英]C++ “invalid comparator” error in operator overload when negating the result
關於操作員重載,我遇到了一個非常奇怪的問題。 下面的函數在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
,那么b < a
(在if之外)和a < b
(在if內)都為真
正確的比較器應定義嚴格的弱排序
目前尚不清楚您要達到的目標,但是下面的代碼將定義正確的嚴格弱排序
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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.