Dashia18 / Simple_fraction_class

Class of simple fraction
0 stars 0 forks source link

Установка начальных значений #3

Closed sergregory closed 9 years ago

sergregory commented 9 years ago
void Simple_fraction::set_simple_fraction (int numerator, int denominatior)
...

вывод в консольку сообщения об ошибке это хорошо, но нам бы хотелось узнавать в программе что мы что-то не то передали в класс. Как это сделать?

Dashia18 commented 9 years ago

Сделала метод который возвращает bool и проверку в main.cpp что если false -> returne -1;

bool set_simple_fraction(int num, int den);

if(sf_a.set_simple_fraction(3,0) == false)
    {
        fa=0;
        return -1;
    }
sergregory commented 9 years ago

Так, теперь у нас есть метод, который устанавливает значение и метод, который конструирует из double Simple_fraction. Может попробуем написать конструктор? И возможность создания из double и float я бы запретил.. Чтобы запретить возможность вызыва конструктора с параметрами определённых типов, можно объявить конструктор, принимающий параметры этих типов (только объявление метода, без реализации) и сделать его приватным

class Simple_fraction{
public:
Simple_fraction(int num, int denom)
{
...
}
...
private:
Simple_fraction(double num, double denom);
}
Dashia18 commented 9 years ago

Создала конструктор который устанавливает значение для простой дроби.

//Объявление

public:
Simple_fraction();
Simple_fraction(int num, int den);
private:
Simple_fraction(double num, double den);

//Реализация

Simple_fraction::Simple_fraction(){
    set_simple_fraction(0, 1);
}
Simple_fraction::Simple_fraction(int num, int den){
    set_simple_fraction(num, den);
}

//Вызов

sf_a = Simple_fraction(3,4);
sf_b= Simple_fraction(1,2);

Правда он почти не отличим от метода установки параметров.

sergregory commented 9 years ago

Вот как раз то, что я хотел) есть метод, который устанавливает параметры правильным образом, а все конструкторы просто его вызывают с нужными параметрами) Супер)

sergregory commented 9 years ago

:+1: