簡體   English   中英

C ++ vector :: erase抱怨重載解決方案並刪除了運算符'=='

[英]C++ vector::erase complains about overload resolution & deleted operator '=='

我在C++使用std::vector使用vector::push_back存儲類對象的列表。

我的add函數接受基類類型,以便可以使用相同的方法。

Add(MyBaseClass object) {
  my_vector.push_back(object)
}

我有刪除功能,可以按添加的每個項目刪除它

Remove(MyBaseClass object) {
  my_vector.erase(std::remove(my_vector.begin(), my_vector.end(), object), my_vector.end());
}

添加工作正常,但我的Remove方法給出以下錯誤:

overload resolution selected deleted operator '=='
            if (!(*__i == __value_))
              ~~~~ ^  ~~~~~~~~

我從這里獲取了vector :: erase代碼。 我刪除項目的方式有什么問題? 還有其他更可取的按項目擦除的方法嗎?

要在std::vector上運行removeForwardIterator要求的 ForwardIterator 保證 ,指定MyBaseClass 必須實現operator==

您的班級似乎沒有實現此目標,因此編譯失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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