Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
N476
0 / 0 / 0
Регистрация: 14.03.2015
Сообщений: 24
1

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

08.04.2015, 20:25. Просмотров 1103. Ответов 4
Метки нет (Все метки)

Всем здравствуйте. У меня не выходит перегрузка операторов сравнения для собственного тд, пытаюсь сделать так :
C++
1
2
3
4
5
6
bool operator==(myType const &x, myType const &y)
{
    if ((x - y) == 0)
        return true;
    else return false;
}
Но для этого нужно перегрузить "-" , это тоже не выходит. Как правильно сделать подобные действия?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2015, 20:25
Ответы с готовыми решениями:

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

Перегрузка операторов сравнения
Вот этот класс. Помогите пожалуйста. #include <iostream> ...

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

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

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

4
Yanush
159 / 156 / 61
Регистрация: 28.09.2013
Сообщений: 288
Завершенные тесты: 1
08.04.2015, 21:22 2
Для начала необходимо знать, что за класс у вас и по каким признакам (аттрибутам) вы хотите перегрузить операцию сравнения для экземпляров класса...
0
Renji
2105 / 1545 / 471
Регистрация: 05.06.2014
Сообщений: 4,484
08.04.2015, 21:28 3
Цитата Сообщение от N476 Посмотреть сообщение
Как правильно сделать подобные действия?
Объявлять оператор как метод, а не внешнюю функцию у которой нет доступа никуда.
C++
1
2
3
4
5
6
struct myType
{
    bool operator==(const myType&val)const{return value==val.value;}
private:
    int value;
};
0
N476
0 / 0 / 0
Регистрация: 14.03.2015
Сообщений: 24
08.04.2015, 22:45  [ТС] 4
Цитата Сообщение от Renji Посмотреть сообщение
Объявлять оператор как метод, а не внешнюю функцию у которой нет доступа никуда.
Код C++
struct myType
{
* * bool operator==(const myType&val)const{return value==val.value;}
private:
* * int value;
};

Спасибо! Получилось
0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
09.04.2015, 12:37 5
Цитата Сообщение от Renji Посмотреть сообщение
Объявлять оператор как метод,
Вообще-то, не рекомендуется. Т.к. это исключает возможность использовать первым аргументом тип, не являющийся myType, но который, тем не менее, может быть неявно преобразован в myType.
Поэтому делают внешнюю (дружественную, если необходимо) функцию. Пример:
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
#include <iostream>
using namespace std;
 
struct S
{
    S( int = 0 ) {}
    bool operator== (const S& rhs) { return true; }
};
 
// bool operator== (const S& lhs, const S& rhs)  { return true; }
 
 
int main() {
    
    S s1, s2;
    
    cout << boolalpha << (s1==s2) << endl;
    
//  cout << boolalpha << (1==s2) << endl; // Не работает, если operator== объявлен как член
    
    cout << boolalpha << (s1==2) << endl;
    
    return 0;
}
http://ideone.com/wC5npo
1
09.04.2015, 12:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.04.2015, 12:37

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

Перегрузка оператора сравнения
Перегрузка: bool Zakaz::operator==(Zakaz&amp;B) {...

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru