我在C++
上使用std::vector
來存儲使用vector::push_back
的類對象列表。C++ vector :: erase抱怨超載分辨率和刪除的運算符'=='
我的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_))
~~~~^~~~~~~~~
我拿起載體::從here擦除代碼。 我的擦除方法有什麼問題?有沒有其他更好的方法來刪除項目?
'MyBaseClass'是否有'operator =='? – NathanOliver
nope。我需要定義一個嗎?不應該默認提供的工作? –
這聽起來像你期待與MyBaseClass的子類一起工作。它不;閱讀「對象切片」。 – molbdnilo