Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/21: Рейтинг темы: голосов - 21, средняя оценка - 4.86
1 / 0 / 1
Регистрация: 30.12.2020
Сообщений: 31
1

Правильная перегрузка операторов сравнения

27.06.2021, 12:58. Показов 3854. Ответов 1

Author24 — интернет-сервис помощи студентам
Добрый день, есть такие каноничные правила для определения операторов сравнения внутри класса. Определяешь <, а уже через него выражаешь все остальные. Но сколько я не пытался определять <, для класса с парой чисел, это не работает так как должно (также я где-то на вики читал, что для двух геометрических точек оператор < не определён). Подскажите, существует ли реализация для оператора < для сравнения объектов класса, состоящего из двух числовых полей?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class test
{
 
public:
    int a;
    int c;
 
    test() = default;
 
    test(int b, int s) : a(b), c(s){};
 
    void Print() const
    {
        std::cout << a << std::endl;
        std::cout << c;
    }
inline bool operator< (const test& other) const {}
inline bool operator> (const test& other) const {
     return other < *this;}
inline bool operator<=(const test& other) const {
     return !(*this > other);}
inline bool operator>=(const test& other) const {
     return !(*this < other);}
inline bool operator== (const test& other) const {
     return !(*this < other || *this > other);}
inline bool operator!= (const test& other) const {
     return !(*this == other);}
};
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.06.2021, 12:58
Ответы с готовыми решениями:

правильная перегрузка операторов
Доброго времени суток. Я пишу класс матриц для себя. Возникла проблема при перегрузке операторов....

Перегрузка операторов сравнения
Бинарное дерево BTree состоит из узлов BTreeItem. В узлах может находиться одна из фигур...

Перегрузка операторов сравнения
Всем здравствуйте. У меня не выходит перегрузка операторов сравнения для собственного тд, пытаюсь...

Перегрузка операторов сравнения
Вот этот класс. Помогите пожалуйста. #include &lt;iostream&gt; #include&lt;iomanip&gt; ...

1
18894 / 9852 / 2410
Регистрация: 30.01.2014
Сообщений: 17,295
27.06.2021, 13:12 2
Лучший ответ Сообщение было отмечено HardCandy2021 как решение

Решение

HardCandy2021,

https://en.wikipedia.org/wiki/Weak_ordering

https://en.cppreference.com/w/... weak_order
C++
1
2
3
bool operator< (const test& other) const {
    return std::tie(a, b) < std::tie(other.a, other.b);
}
Цитата Сообщение от HardCandy2021 Посмотреть сообщение
Определяешь <, а уже через него выражаешь все остальные.
В современном C++ можно сделать так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class test
{
public:
    int a;
    int c;
 
    test() = default;
 
    test(int b, int s) : a(b), c(s){};
 
    void Print() const
    {
        std::cout << a << std::endl;
        std::cout << c;
    }
 
    std::strong_ordering operator<=>(const test& other) const = default;
};
1
27.06.2021, 13:12
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.06.2021, 13:12
Помогаю со студенческими работами здесь

Перегрузка операторов сравнения двух дат
Попытался перегрузить операторы сравнения двух дат, правильно перегрузил? если нет, то как...

Перегрузка операторов сравнения и разницы. Класс String
Всем привет. задание написано в начале программы. Кто может помочь с исправлением -, &lt;, &gt; Мне...

Перегрузка операторов сравнения для класса Rational
Прохожу курс вот условие Еще одна важная группа операторов, которые полезно реализовать для класса...

Перегрузка оператор ввода вывода и перегрузка арифметических операторов С++
Создать класс Time для работы со временем в формате «час:минута:секунда». Класс должен включать в...

Что такое "перегрузка операторов"? Каковы принципы работы перегруженных операторов и назначение указателя this
Добрый день . Помогите понять принцип работы перегрузки операторов. объясните пожалуйста в...

Правильная перегрузка оператора ввода
Добрый день. Заранее извиняюсь, если данный вопрос уже задавался, и буду рад если на него уже есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru