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

Переопредения нуля для структуры (класса) - C++

Восстановить пароль Регистрация
 
azbest
 Аватар для azbest
36 / 36 / 7
Регистрация: 12.03.2013
Сообщений: 141
08.02.2014, 01:26     Переопредения нуля для структуры (класса) #1
Пишу клас дробей вида (sqrt(f)+n)/d. Нужно проверять равна ли такая дробь нулю, тоесть (f==0&&n==0) но так писать каждый раз не удобно, и нет прямого доступа к полям переменных (frac.f, frac.n, frac.d).
Можно как-то переопределить ноль для класса, или оператор "==", "!=" чтоб можно было записать так
C++
1
2
3
frac x;
........
if (x==0) ....
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
08.02.2014, 01:31     Переопредения нуля для структуры (класса) #2
azbest, вам наверно нужны дефайны, если правильно понимаю.

Например замена unsigned int на uint
C++
#define uint unsigned int
или typedef
C++
typedef unsigned int uint;
azbest
 Аватар для azbest
36 / 36 / 7
Регистрация: 12.03.2013
Сообщений: 141
08.02.2014, 01:34  [ТС]     Переопредения нуля для структуры (класса) #3
Мне скорее всего нужны не дефайны, а нулевая константа внутри класса которая будет обозначать нулевую дробь. Чтоб ноль "0" при сравнении с дробью воспринимался как нулевая дробь, а не как целое число.
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
08.02.2014, 01:43     Переопредения нуля для структуры (класса) #4
C++
bool operator==(frac x)
{
  if(frac.a == this->a) return true;
  else false;
}
azbest
 Аватар для azbest
36 / 36 / 7
Регистрация: 12.03.2013
Сообщений: 141
08.02.2014, 01:50  [ТС]     Переопредения нуля для структуры (класса) #5
так "==" вроди бинарный, у меня переопределение такое
C++
1
2
3
4
5
bool operator==(const frac& left, const frac& right) {
    return (left.f == right.f)&&
           (left.n == right.n)&&
           (left.d == right.d);
}
и две дроби у меня сравнивает нормально, а с нулем как быть.

может написать в паблике какую-то функцию, типа
C++
1
2
3
bool ifZero() {
     return (f==0&&n==0)
}
и потом использовать типа
C++
1
if (x.ifZero()) {...}
но так все равно не красиво. Хотелось бы чтоб можно было использовать запись if (x==0)
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
08.02.2014, 02:09     Переопредения нуля для структуры (класса) #6
C++
#include <stdio.h>
 
 
class MY
{
public:
    int a;
    
    bool operator==(MY my)
    {
        return (my.a==this->a);
    }
};
 
 
int main()
{
    MY my1, my2;
    my1.a = 7;
    my2.a = 7;
    
    if(my1==my2)
        printf("True\n");
    else
        printf("False\n");
}
azbest
 Аватар для azbest
36 / 36 / 7
Регистрация: 12.03.2013
Сообщений: 141
08.02.2014, 02:14  [ТС]     Переопредения нуля для структуры (класса) #7
и что будет если написать if my1==0?

я наверное плохо обьяснил, или Вы меня не совсем поняли.
castaway
Эксперт С++
4848 / 2987 / 368
Регистрация: 10.11.2010
Сообщений: 11,028
Записей в блоге: 10
Завершенные тесты: 1
08.02.2014, 08:54     Переопредения нуля для структуры (класса) #8
C++
1
2
3
bool operator == ( const int & value ) const {
    ...
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2014, 11:42     Переопредения нуля для структуры (класса)
Еще ссылки по теме:

Поля структуры внутри класса C++
Функция класса заполнения структуры C++
C++ Указатель на член структуры/класса

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

Или воспользуйтесь поиском по форуму:
azbest
 Аватар для azbest
36 / 36 / 7
Регистрация: 12.03.2013
Сообщений: 141
08.02.2014, 11:42  [ТС]     Переопредения нуля для структуры (класса) #9
Утро вечера мудренее.

Уже сам додумался с утра.

Спасибо.
Yandex
Объявления
08.02.2014, 11:42     Переопредения нуля для структуры (класса)
Ответ Создать тему
Опции темы

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