我創建了一個類Location
。該班級是City
和Village
班的父班。 Location
類是抽象的。我創建了一個vector<Location*> locations
,其中包含城市和村莊。 Location
包含一個名稱。如果兩個地點具有相同的名稱,則意味着它們是相同的。我爲Location
重載了運營商==
。C++重載操作符==
bool operator==(const Location& lhs) const
{
return (this->mName.compare(lhs.mName) == 0);
}
如果我想添加一些位置到vector
,我首先檢查這個位置是否不存在。我用這個功能:
bool checkLocation(Location* l) {
return find(locations.begin(), locations.end(), l) != locations.end();
}
例如,如果我想一些城市加入到vector
,上述方法仍返回false
,這意味着,Location
不存在。但在vector
有一個同名的城市。你能告訴我,問題在哪裏?謝謝。
請注意,矢量存儲*指針*,所以'find'調用將比較*指針*而不使用您的'operator =='函數。 –
你應該以某種方式調試你的'operator ==',看它是否被調用。 – StoryTeller
@juanchopanza:'std :: find_if'不需要* binary *謂詞(它不需要,因爲它沒有意義!)。 – Nawaz