#include <iostream>
using namespace std;
class Fraction
{
private:
//variables to store numerator and denominator
int num;
int denom;
public:
Fraction();
Fraction(int num): num(num) {}
Fraction(int num, int denom): num(num), denom(denom) {}
int get_numerator() const {return num;}
int get_denominator() const {return denom;}
};
istream &operator>> (istream &input, Fraction &f)
{
int n, d;
char slash;
input >> n;
input >> slash;
input >> d;
f = Fraction(n, d);
return input;
}
ostream &operator<<(ostream &output, const Fraction &frac)
{
return output << frac.get_numerator() << "/" << frac.get_denominator();
}
int main()
{
Fraction frac(1,2);
Fraction frac2;
cout << frac << endl;
cin >> frac2;
cout << frac2 << endl;
return 0;
}
I am trying to create a fraction data type. The code should allow the user to input a fraction using the overloaded ">>" operator but it does not work as i get an error: in function 'main' : undefined reference to Fraction::Fraction()
Ive tried the code without the overloaded input operator and it works fine.
What am i doing wrong?