Я работаю над сравнением моего объекта с другим объектом того же типа.
Entry<string, string>* name = new Entry<string, string>(names[9], paths[9]);
Entry<string, string>* name2 = new Entry<string, string>(names[9], paths[9]);
bool isSame = name == name2;
Это всегда ложно.
В моей реализации я попробовал несколько вещей, но безуспешно.
template<class KeyType, class ItemType>
bool Entry<KeyType, ItemType>::operator==(Entry<KeyType, ItemType>* rightHandItem)
{
KeyType key = rightHandItem->getKey();
return (searchKey == key);
}
template<class KeyType, class ItemType>
bool Entry<KeyType, ItemType>::operator>(Entry<KeyType, ItemType>* rightHandItem)
{
KeyType key = rightHandItem->getKey();
return (searchKey > key);
}
template<class KeyType, class ItemType>
bool Entry<KeyType, ItemType>::operator<(Entry<KeyType, ItemType>* rightHandItem)
{
KeyType key = rightHandItem->getKey();
return (searchKey < key);
}
Это мой заголовочный файл класса
#pragma once
template<class KeyType, class ItemType>
class Entry
{
public:
Entry();
Entry(KeyType& searchKey);
Entry(KeyType& searchKey, ItemType newEntry);
~Entry();
ItemType getItem() const;
KeyType getKey() const;
void setItem(const ItemType& newEntry);
bool operator==(const Entry<KeyType, ItemType>& rightHandItem) const;
bool operator>(const Entry<KeyType, ItemType>& rightHandItem) const;
bool operator<(const Entry<KeyType, ItemType>& rightHandItem) const;
bool operator==(Entry<KeyType, ItemType>* rightHandItem);
bool operator>(Entry<KeyType, ItemType>* rightHandItem);
bool operator<(Entry<KeyType, ItemType>* rightHandItem);
private:
ItemType Item;
KeyType searchKey;
protected:
void setKey(const KeyType& searchKey);
};
#include "Entry.cpp"
Единственный способ заставить это работать - это объявить запись как объект, а не как указатель.
Я думал, что этот вопрос будет быстрым поиском, но я не смог найти дубликат. Дайте мне знать, если об этом уже спрашивали.
Как сравнить два указателя?