我遇到一些错误(如下所示),我不确定是什么原因导致了这些错误。我看了看我的老师的示例代码,发现自己所做的任何事情都不会导致此错误。
我也尝试过查找错误并调整代码,但一无所获。对于出现问题的一些帮助,我将不胜感激。谢谢!
// error
Rational.cpp:60:10: error: cannot bind non-const lvalue reference of type ‘Rational&’ to an rvalue of type ‘Rational’
return Rational(num, den);
^~~~~~~~~~~~~~~~~~
// in Rational.h
Rational add(const Rational &r) const;
// in Rational.cpp
Rational Rational::add(const Rational &r) const
{
int num = (numerator * r.denominator) + (denominator * r.numerator);
int den = denominator * r.denominator;
return Rational(num, den);
}
p.s。我正在介绍C ++,因此,我希望您能使用更简单的术语和解释!
答案 0 :(得分:4)
构造函数在应采用Rational::Rational(Rational&)
引用时定义为const
。您不能将临时绑定到非常量引用,并且add
返回一个临时。要使用该临时变量来初始化新构造的有理数,构造函数需要采用非const引用。