Реализация вашей функции EqualTo
предполагает, что вы должны перегрузить operator==
, чтобы проверить, равны ли 2 Date
объекта. Все, что вам нужно сделать, это переименовать EqualTo
в operator==
. И вы должны принимать аргументы const&
.
bool Date::operator==(Date const &d) const
{
return (mn == d.mn) && (dy == d.dy) && (yr == d.yr);
}
Внутри класса Date
объявление будет выглядеть так:
bool operator==(Date const &d) const;
Другой способ сделать это - сделать оператор - друг класса:
friend bool operator==(Date const &a, Date const &b) const
{
return (a.mn == b.mn) && (a.dy == b.dy) && (a.yr == b.yr);
}
Обратите внимание, что в этом случае это не функция-член. В этом случае вы можете определить его внутри класса (где вам нужно ключевое слово friend).
Если вы определяете функцию friend
вне класса, вам все равно нужно объявить ее как friend
внутри класс. Однако определение больше не может содержать ключевое слово friend
.
Я бы также рекомендовал называть ваши переменные более четко, например, month
, day
и year
.