簡體   English   中英

取反結果時,運算符重載中的C ++“無效比較器”錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM