0
C++のベクトルからオブジェクトを消去しようとしていますが、奇妙な(そして長い)エラーが出ています。私はこれを書いた:C++のベクトルからオブジェクトを消去する
#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;
}
正確なエラーはhereです。
一方、intのベクトルを作成し、そのベクトルから整数を削除しようとすると、正常に動作します。
#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;
}
最初にエラーが発生する理由はわかりません。
ポスト正確なエラーメッセージ –
何の 'FOO ::演算子は=='はありません –
私の推測であなたのために定義された比較演算子を持っていないため、エラーが発生します ' fooクラス。どのようにして 'foo'クラスのインスタンスを比較するのか、コンパイラはどのように知っていますか? –