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

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

Войти
Регистрация
Восстановить пароль
 
azbest
41 / 41 / 8
Регистрация: 12.03.2013
Сообщений: 148
#1

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

08.02.2014, 01:26. Просмотров 253. Ответов 8
Метки нет (Все метки)

Пишу клас дробей вида (sqrt(f)+n)/d. Нужно проверять равна ли такая дробь нулю, тоесть (f==0&&n==0) но так писать каждый раз не удобно, и нет прямого доступа к полям переменных (frac.f, frac.n, frac.d).
Можно как-то переопределить ноль для класса, или оператор "==", "!=" чтоб можно было записать так
C++
1
2
3
frac x;
........
if (x==0) ....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.02.2014, 01:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переопредения нуля для структуры (класса) (C++):

Почему для пустого класса или структуры выделяется 1 байт? - C++
С коллегой знаем, что для пустого класса или структуры выделяется 1 байт. Но нигде не можем найти почему именно один байт. Но такая...

Реализуйте интерфейс динамической структуры list для работы с объектами класса А - C++
Добрый день товарищи программисты. Столкнулся с задачей и никак не могу решить... Так вот вопросы по заданию заключаются в следующем: ...

Как перегрузить операцию = для присваивания элементам структуры внутри класса значений? - C++
Помогите, если не затруднительно. Столкнулся с проблемой, когда пытался присвоить в конструкторе значения элементам структуры, которая...

Отличаи класса С++ от структуры на С и структуры на С++ - C++
Можете, пожалуйста, перечислить все отличия?

Объявление структуры и класса - C++
Ругается на строку obj_cls.prv=3; и на объявление класса. Что у меня не правильно? #include <iostream> using namespace std; ...

Поля структуры внутри класса - C++
Здравствуйте, почему при выполнении метода movingNode поля элемента структуры node (координаты x и y) не меняются? Метод: void...

8
programina
1914 / 599 / 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;
0
azbest
41 / 41 / 8
Регистрация: 12.03.2013
Сообщений: 148
08.02.2014, 01:34  [ТС] #3
Мне скорее всего нужны не дефайны, а нулевая константа внутри класса которая будет обозначать нулевую дробь. Чтоб ноль "0" при сравнении с дробью воспринимался как нулевая дробь, а не как целое число.
0
programina
1914 / 599 / 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;
}
0
azbest
41 / 41 / 8
Регистрация: 12.03.2013
Сообщений: 148
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)
0
programina
1914 / 599 / 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");
}
0
azbest
41 / 41 / 8
Регистрация: 12.03.2013
Сообщений: 148
08.02.2014, 02:14  [ТС] #7
и что будет если написать if my1==0?

я наверное плохо обьяснил, или Вы меня не совсем поняли.
0
castaway
Эксперт С++
4915 / 3023 / 370
Регистрация: 10.11.2010
Сообщений: 11,081
Записей в блоге: 10
Завершенные тесты: 1
08.02.2014, 08:54 #8
C++
1
2
3
bool operator == ( const int & value ) const {
    ...
}
1
azbest
41 / 41 / 8
Регистрация: 12.03.2013
Сообщений: 148
08.02.2014, 11:42  [ТС] #9
Утро вечера мудренее.

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

Спасибо.
0
08.02.2014, 11:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2014, 11:42
Привет! Вот еще темы с ответами:

Указатель на член структуры/класса - C++
Всем привет! Помогите разобраться. Пусть есть такой код: template &lt;typename Type&gt; class DynamicQueue { private: class Node { ...

Функция класса заполнения структуры - C++
Помогите пожалуйста, начал учиться С++, есть задание создать в функцию класса для заполнения структы различными данными. числа вводятся, а...

Отличие структуры и класса от контейнера - C++
Добрый день! Подскажите пожалуйста, чем отличается контейнер от структуры и класса?

Возврат копии структуры из другого класса - C++
Как можно копию структуры из одного класса передать в другой? (именно чтоб она изначально в private была) Сам только до такой вариант...


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

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

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