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

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

13.05.2018, 14:26. Показов 1186. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть класс Double,есть функция max(Double, Double), как правильно перезагрузить оператор сравнения в классе или не в нем?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Double {
 
    private:
        double n;
        
    public:
 
        Double() { n = 0; } //Конструктор по умолчанию
 
        Double(double i) { n = i; } //Конструктор с параметрами
 
        double value() { return n; } //Возращаем от n
 
        Double max(const Double &n, const Double&m)
        {
            if (n > m)
                return n;
            else
                return m;
        }
Функция max дружественная к классу Double,то оператор будет дружественным или в классе?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2018, 14:26
Ответы с готовыми решениями:

Сравнить два целых числа, не используя условного оператора, оператора выбора и так же символов сравнения
Добрый день уважаемые программисты, хотелось, чтобы вы помогли мне в решении одной задачи, а именно...

Перегрузка оператора сравнения
Есть рабочий код и скрин выполнения чтоб понять суть задачи Rects Rects::operator <(const Rects &...

Перегрузка оператора сравнения
Перегрузка: bool Zakaz::operator==(Zakaz&B) { if(strcmp(Familia_Zak,B.Familia_Zak)==0 && Street...

Перегрузка оператора сравнения
Посмотрите, пжл, правилен ли синтаксис перегрузки оператора сравнения для двух строк: #include...

7
7795 / 6561 / 2985
Регистрация: 14.04.2014
Сообщений: 28,682
13.05.2018, 15:16 2
Что не получается? Уже много раз это обсуждали. Делай operator в классе.
0
2 / 2 / 2
Регистрация: 11.10.2016
Сообщений: 123
13.05.2018, 17:09  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
Что не получается? Уже много раз это обсуждали. Делай operator в классе.
Сколько аргументов должен принимать operator, по идеи два так как бинарная операция, но компилятор говорит об обратном
C++
1
2
3
4
5
6
7
bool operator >(const Double& left, const Double& right)
        {
            if (left.n > right.n )
                return false;
            else
                return true;
        }
Добавлено через 34 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const  bool operator <(const Double& left)
        {
            if ( n < left.n)
                return false;
            else
                return true;
        }
 
         Double max(const Double& left,const Double& right)
         {
             if (left < right)
                 return right;
            else
                 return left;
         }
В чем проблема?
0
7795 / 6561 / 2985
Регистрация: 14.04.2014
Сообщений: 28,682
13.05.2018, 17:48 4
C++
1
2
3
4
bool operator < (const Double& left) const
{
    return n < left.n;
}
0
"C with Classes"
1646 / 1403 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
13.05.2018, 18:03 5
Цитата Сообщение от nmcf Посмотреть сообщение
bool operator < (const Double& left) const
{
* * return n < left.n;
}
double же так нельзя сравнивать
0
7795 / 6561 / 2985
Регистрация: 14.04.2014
Сообщений: 28,682
13.05.2018, 21:15 6
Это почему?
0
"C with Classes"
1646 / 1403 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
13.05.2018, 21:40 7
nmcf, с SO
C++
1
2
3
4
5
6
#include <cmath>
#include <limits>
 
bool is_equal(double x, double y) {
    return std::fabs(x - y) < std::numeric_limits<double>::epsilon();
}
Добавлено через 1 минуту
тема: Безопасно ли сравнение == для типа double?
0
7795 / 6561 / 2985
Регистрация: 14.04.2014
Сообщений: 28,682
13.05.2018, 22:48 8
_stanislav, у него-то другая тема. Не думаю, что там вдаются в такие тонкости.
0
13.05.2018, 22:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2018, 22:48
Помогаю со студенческими работами здесь

Перегрузка оператора сравнения
Скажите, как перегрузить оператор сравнения == и другие? попробовал bool operator == (char* A,char*...

Правильная перезагрузка оператора ''=''
совсем недавно начал работать с шаблонами, и возникла такая проблема: имеется шаблонный класс -...

Перегрузка оператора сравнения. Вектор
Здравствуйте. Допустим есть класс. class Sector { private: int number; ...

Перегрузка оператора сравнения и сортировка
Имеется класс строка на основе vector&lt;char&gt;. У меня не получается перегрузить оператор сравнения. И...


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

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