У меня есть ошибка, которую я не смог исправить в своем коде.
Если я вызову свою функцию в main следующим образом:
Ratio f34(3L,4L);
const Ratio one(f34.divide(f34));
или
Ratio s = Ratio(7).divide(Ratio(8));
У меня есть ошибка, которая говорит
error: cannot
bind non-const lvalue reference of type ‘Ratio&’ to an
rvalue of type ‘Ratio’
, а вот мой конструктор Ratio и функция деления:
Ratio::Ratio( long numerator, long denominator) : nu(numerator) , de(denominator) {
if (denominator == 0) {
throw std::runtime_error("Cannot divide by 0");
}
}
Ratio Ratio::divide(Ratio r) {
long num = r.de *nu;
long den = de * r.nu;
Ratio result(num,den);
return result;
}
Примечание: nu и de являются частными переменные в классе Ratio.
Я пытался изменить аргумент деления на (const Ratio & r), но это не решило проблему. У меня все та же ошибка.
Что я понимаю, так это то, что компилятор жаловался на то, что он не может сделать временную копию объекта. Я до сих пор понятия не имею, как я могу решить это. Я перепробовал все! пожалуйста помогите:).