我在保留向量中的對象時遇到了一些麻煩,我想我需要對運算符進行一些操作。運算符==和向量混淆
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
}
美孚需要操作==編譯,我這樣做
bool Foo::operator==(const Foo& rhs) {
return this == &rhs;
}
但是從我個人理解,vec.push_back
,將會使Foo對象的副本,所以我的==將返回假。
因此,每當我開始搜索時,它就永遠找不到。
這裏做什麼是正確的?我希望避免切換到指針向量。
你會寫'operator ==()'處理Foo中的數據而不是指針? –