개체를 벡터에 보관하는 데 문제가 있으며 연산자를 사용하여 처리해야한다고 생각합니다.연산자 == 및 벡터 혼동
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 ==()'연산자를 사용 하시겠습니까? –