【发布时间】:2018-02-24 22:14:39
【问题描述】:
Class fraction
{
public:
fraction operator+ (const fraction& fr) const;
private:
int num; //numerator
int den; //denominator
};
我想重载 operator+ 以便它执行整数常量(调用对象)和分数的乘法。
fraction fraction::operator+ (const fraction& fr) const
{
fraction result;
result.num = fr.num + fr.den * (*this);
//error message says invalid operands to binary exprssion ('int' and 'constant fraction')
result.den = fr.den;
simplified_fr(result); // a helper function to simplify the resulted fraction
return result;
}
问题似乎与调用对象的类型有关。我打算使它成为一个常数整数,但计算机认为它是一个“常数分数”。有人可以告诉我为什么会发生这种情况,我该如何解决?提前谢谢!!!
【问题讨论】:
-
这个
new_fr.num = fr.num * (*this);毫无意义,你想在实现中做一些int算术而不是fraction;result.den = fr.den;这在数学上是错误的。 -
this->num而不是(*this)?我还可以建议潜入std::ratio吗? -
hmm,num 是类对象的成员。但是指向的调用对象“this”应该是一个整数。所以,我不太明白 'this->num' 是如何工作的?