Помогите разобраться с задачей:
Вам дан класс 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 для операторов +=, -=, *=, /=?





