【发布时间】:2020-03-19 16:01:16
【问题描述】:
class Fraction
{
private:
int numer; //fraction numerator
int denom; //fraction denominator
public:
Fraction(int num, int den): numer(num), denom(den) {};
friend Fraction operator+(Fraction& frac1, Fraction& frac2); // add fraction
friend Fraction operator-(Fraction& frac); // negative fraction
friend Fraction operator-(Fraction& frac1, Fraction& frac2); // subtract fraction
};
Fraction operator+(Fraction& frac1, Fraction& frac2) // everything OK
{
return Fraction(frac1.numer * frac2.denom + frac2.numer * frac1.denom, frac1.denom * frac2.denom);
}
Fraction operator-(Fraction& frac) // everything OK
{
return Fraction(-frac.numer, frac.denom);
}
Fraction operator-(Fraction& frac1, Fraction& frac2) // here begin some problems
{
return frac1 + (-frac2);
}
除了最后一个功能外,一切正常。它看不到变量,只是给出编译器错误:
错误 C2679 二进制“+”:未找到采用“分数”类型的右侧操作数的运算符(或没有可接受的转换)
有什么问题?
【问题讨论】:
标签: c++ class operator-overloading