Помогите разобраться с задачей:
Вам дан класс Rational, который представляет рациональное число. В нем определены методы add, sub, mul и div, которые прибавляют к нему число, отнимают число, умножают на число и делят на число соответственно. Кроме того в нем определен метод neg, который меняет знак на противоположный. Вам нужно определить операторы +=, -=, *=, /= для класса Rational, так чтобы они могли принимать в качестве аргументов и объекты типа Rational и целые числа. Кроме того вам необходимо определить операторы унарного минуса и плюса для класса Rational.
struct Rational
{
Rational(int numerator = 0, int denominator = 1);
void add(Rational rational);
void sub(Rational rational);
void mul(Rational rational);
void div(Rational rational);
void neg();
void inv();
double to_double() const;
private:
int numerator_;
unsigned denominator_;
};
Вот мой неработающий черновик с идеями:
Rational& operator+=(Rational rational)
{
return (rational.add(*this));
};
Rational& operator-=(Rational rational)
{
return (rational.sub(*this));
};
Rational& operator*=(Rational rational)
{
return (rational.mul(*this));
};
Rational& operator/=(Rational rational)
{
return (rational.div(*this));
};
Rational operator-()
{
this->sub();
return *this;
};
Rational operator+()
{
this->add();
return *this;
};
Самое главное я не пойму как мне получить rvalue для операторов +=, -=, *=, /=?