Class fraction
{
public:
fraction operator+ (const fraction& fr) const;
private:
int num; //numerator
int den; //denominator
};
我想覆盖运算符+,以便它执行整数常量(调用对象)和分数的乘法。
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;
}
似乎问题在于调用对象的类型。我打算让它成为一个常数整数,但计算机认为它是一个常数分数'。有人可以告诉我为什么会这样,我该如何解决?提前谢谢!!!
答案 0 :(得分:0)
我认为你想做到这样的事情:
fraction fract;
fraction fract2 = 2 + fract;
答案是,您不能为非类对象重载成员方法运算符+。但是你可以定义/重载全局运算符+函数:
fraction operator+(int num, const fraction& rFrac)
{
//your implementation
}
您可能需要访问fraction
课程的私人成员。这可以通过让操作员+成为朋友来实现:
class fraction
{
//...
friend fraction operator+(int num, const fraction& rFrac);
//...
}