Bir nesneyi C++ içindeki bir vektörden silmeye çalışıyorum, ancak garip (ve uzun) bir hata veriyor. Ben bu yazdım: Ben olsunC++ 'da vektör nesnesinden nesneyi silme 0 ++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class foo
{
int a;
public:
foo(int _a):a(_a){}
};
int main() {
foo f1(5),f2(10);
vector<foo> vec = {f1,f2};
vec.erase(remove(vec.begin(),vec.end(),f1),vec.end()); // remove f1 (error)
return 0;
}
tam hata here olduğunu.
Diğer taraftan, bir int vektörünü oluşturduğumda ve o vektörden bir tamsayı çıkarmaya çalıştığımda, düzgün çalışıyor.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> vec = {5,10};
vec.erase(remove(vec.begin(),vec.end(),5),vec.end()); // works fine
return 0;
}
İlk durumda neden bir hata olduğunu bilmiyorum.
Mesaj hata mesajı tam olarak –
hiçbir foo :: operatör == 'Orada –
Benim tahminim için tanımlanmış hiçbir karşılaştırma operatörü var çünkü hata alıyorum' foo sınıfı. Derleyici, "foo" sınıfının örneklerini nasıl karşılaştırır? –