Форум программистов, компьютерный форум CyberForum.ru

Как сделать перегрузку операции ">"? - C++

Восстановить пароль Регистрация
 
YuraStyle
0 / 0 / 0
Регистрация: 04.11.2010
Сообщений: 9
01.12.2011, 22:17     Как сделать перегрузку операции ">"? #1
Как сделать перегрузку операции ">"?
Например b>a, если b и а объекты разработанного класса.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2011, 22:17     Как сделать перегрузку операции ">"?
Посмотрите здесь:

как реализовать перегрузку опрератора "="? C++
C++ Расскажите пожалуйста про оператор "class" из учебника понял только как создать, как сделать содержимое открытым/закрытым...
Как сделать константными значения "m" и "n" C++
Как сделать поле с "|", #, "-" и цифрами C++
Имеется строка "AAABBCCAA", нужно вывести на экран "3A2B2C2A", и так же сделать обратное действие C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5915 / 3352 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
01.12.2011, 22:26     Как сделать перегрузку операции ">"? #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Int {
    int val;
public:
    Int(int v): val(v){
    }
    friend bool operator > (Int l, Int r) {
        return l.val > r.val;
    }
    friend bool operator < (Int l, Int r) {
        return l.val < r.val;
    }
    int getVal()const {
        return val;
    }
    void setVal(int v) {
        val = v;
    }
};
Сыроежка
Заблокирован
01.12.2011, 22:52     Как сделать перегрузку операции ">"? #3
Цитата Сообщение от YuraStyle Посмотреть сообщение
Как сделать перегрузку операции ">"?
Например b>a, если b и а объекты разработанного класса.
У вас две возможности. Либо сделать эту оператор-функцию членом класса, либо сделать ее глобальной функцией.

Если объявлять ее как член класса, то объявление будет выглядеть следующим образом

C++
1
2
3
4
5
6
class T
{
public:
   bool operator >( const T & ) const;
   ...
};
Если объявлять ее глобальной функцией, то ее объявление будет выглядеть следующим образом

C++
1
bool operator >( const T &x, const T &y );
YuraStyle
0 / 0 / 0
Регистрация: 04.11.2010
Сообщений: 9
01.12.2011, 23:15  [ТС]     Как сделать перегрузку операции ">"? #4
Цитата Сообщение от Петррр Посмотреть сообщение
int getVal()const { return val; } void setVal(int v) { val = v; }
а зачем эти методы?

Добавлено через 2 минуты
Цитата Сообщение от Сыроежка Посмотреть сообщение
bool operator >( const T & ) const;
т.е. дружественным метод делать не надо?
Сыроежка
Заблокирован
01.12.2011, 23:22     Как сделать перегрузку операции ">"? #5
Цитата Сообщение от YuraStyle Посмотреть сообщение

Добавлено через 2 минуты

т.е. дружественным метод делать не надо?
если эта функция - член класса, то очевидно никаких спецификаторов friend не нужно. Если это у вас глобальная функция, то все зависит от того, вовлечены ли в операццию сравнения закрытые члены класса и есть ли к доступу к ним открытый интерфейс. Если такого нет, то надо объявлять функцию дружественной.
Yandex
Объявления
01.12.2011, 23:22     Как сделать перегрузку операции ">"?
Ответ Создать тему
Опции темы

Текущее время: 13:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru