オブジェクトをベクトルに保持するのに問題があります。演算子で何かをする必要があると思います。
std::vector<Foo> vec;
Foo a = Foo();
vec.push_back(a);
...
if(std::find(vec.begin(), vec.end(), a) < vec.end()) {
// Found
} else {
// Not found
}
Foo はコンパイルするために operator== が必要です。私はこれを行います
bool Foo::operator==(const Foo& rhs) {
return this == &rhs;
}
しかし、私が理解していることからvec.push_back
、 は Foo オブジェクトのコピーを作成するため、== は false を返します。
したがって、検索を行うたびに、それは決して見つかりません。
ここで何をするのが正しいですか?ポインターのベクトルへの切り替えを避けたいと思っています。