0 / 0 / 0
Регистрация: 14.03.2015
Сообщений: 24
1

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

08.04.2015, 20:25. Показов 2725. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2015, 20:25
Ответы с готовыми решениями:

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

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

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

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

4
162 / 158 / 62
Регистрация: 28.09.2013
Сообщений: 293
08.04.2015, 21:22 2
Для начала необходимо знать, что за класс у вас и по каким признакам (аттрибутам) вы хотите перегрузить операцию сравнения для экземпляров класса...
0
2753 / 1908 / 568
Регистрация: 05.06.2014
Сообщений: 5,559
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
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
:)
Эксперт С++
4773 / 3267 / 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2015, 12:37
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru