Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
N476
0 / 0 / 0
Регистрация: 14.03.2015
Сообщений: 24
#1

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

08.04.2015, 20:25. Просмотров 1032. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Перегрузка операторов сравнения (C++):

Перегрузка операторов сравнения - C++
Вот этот класс. Помогите пожалуйста. #include <iostream> #include<iomanip> #include<cstring> using namespace std; ...

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

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

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

Перегрузка оператора сравнения - C++
Скажите, как перегрузить оператор сравнения == и другие? попробовал bool operator == (char* A,char* B) выдает : оператору ,не являющемуся...

Перегрузка оператора сравнения - C++
Посмотрите, пжл, правилен ли синтаксис перегрузки оператора сравнения для двух строк: #include <cstdio> class base { public: ...

4
Yanush
159 / 156 / 46
Регистрация: 28.09.2013
Сообщений: 288
Завершенные тесты: 1
08.04.2015, 21:22 #2
Для начала необходимо знать, что за класс у вас и по каким признакам (аттрибутам) вы хотите перегрузить операцию сравнения для экземпляров класса...
0
Renji
2118 / 1477 / 348
Регистрация: 05.06.2014
Сообщений: 4,306
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
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 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
Привет! Вот еще темы с ответами:

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

Перегрузка оператора сравнения для строк - C++
В общем мне нужно сделать такую перегрузку, что бы вместо символа, например, &quot;&lt;&quot; выполнялось сравнение через strcmp, например строка...

Перегрузка оператора сравнения (==) для массивов - C++
Имеется класс-массив. Нужно сравнить два массива при помощи перегрузки оператора (==) Помогите написать пожалуйста!!! class array ...

Класс множество. Перегрузка пересечения и сравнения - C++
Помогите перегрузить операции пересечения * и сравнения &gt;. Буду благодарен... Столько дел просто... Может у кого и завалялся кодик... ...


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

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

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