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);
}
Everything work except the last function. It don't see the variable and just give the compiler error:
Error C2679 binary '+': no operator found which takes a right-hand operand of type 'Fraction' (or there is no acceptable conversion)
What's problem?