[英]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
上運行remove
的ForwardIterator
要求的多 ForwardIterator
保證 ,指定MyBaseClass
必須實現operator==
。
您的班級似乎沒有實現此目標,因此編譯失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.