Вы почти всегда хотите сравнивать фактические Point
объекты, а не указатель на Point
.
bool Point::operator>=(Point const & p) {
std::cout << "overloaded>=\n"; // should now print something
return x >= p.x && y >= p.y;
}
Тогда вы вызываете его следующим образом:
int main() {
Point p1{5, 5};
Point p2{4, 4};
std::cout << std::boolalpha << (p1>=p2) << '\n';
}
В качестве примечания: если вы поддерживаете сравнение в C ++, вместо этого (гораздо) чаще использовать перегрузку operator<
.По умолчанию стандартные алгоритмы будут сравниваться для значений меньше, а не больше или равны.
Но, если вы решите внедрить operator<
для использования со стандартными алгоритмами, вам придется убедиться, что он несет«строго слабое» сравнение, которое не является вашим текущим сравнением (как оно есть сейчас, существуют значения A и B (например, {4,5} и {5,4}) для A> = B иB> = A вернет false, указывая, что A ни меньше, ни равно, ни больше, чем B. Оператор сравнения, подобный этому, может (и часто будет) производить неопределенное поведение из таких вещей, как алгоритмы сортировки.