I'm building a Function class in c++.
I have managed to overload the + and the cout operators.
I can do :
Fraction frac1 = {1, 2};
Fraction frac2 = {3, 4};
Fraction frac3 = frac1 + frac2;
std::cout << frac3; // returns "5/4"
I tried to do std::cout << frac1 + frac2 << endl;
But I couldn't...
I don't understand why I can't and how to do...
This is my full structure.
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::ostream;
struct Fraction {
int numerator;
int denominator;
Fraction operator+(const Fraction frac) {
Fraction endingFraction;
if (denominator == frac.denominator) {
endingFraction.numerator = numerator + frac.numerator;
endingFraction.denominator = denominator;
} else {
endingFraction.numerator = numerator * frac.denominator + frac.numerator * denominator;
endingFraction.denominator = denominator * frac.denominator;
}
int gcd = greatestCommonDivisor(endingFraction.numerator, endingFraction.denominator);
endingFraction.numerator /= gcd;
endingFraction.denominator /= gcd;
return endingFraction;
}
friend ostream &operator<<(ostream &out, Fraction &frac) {
cout << frac.numerator << "/" << frac.denominator;
return out;
}
};