Question: I have a code here that is all but worked out but I'm having issues with this compiler error in c++ function 'function' already has
I have a code here that is all but worked out but I'm having issues with this compiler error in c++
"function 'function' already has a body
The function has already been defined."
#include
#include
#include"Fraction.h"
using namespace std;
// private member function to calculate
// gcd, to help reducing the Fraction to
// simplest term
int Fraction::GCD(int n, int d)
{
int result;
if (n % d == 0)
result = d;
else
result = GCD(d, n % d);
return result;
}
// default constructor
Fraction::Fraction()
{
numerator = 0;
denominator = 1;
}
// parameterized constructor
// to initialize the fraction with user defined
// numerator and denominator
Fraction::Fraction(int n, int d)
{
// checking whether denominator is not 0
if (d != 0)
{
// reducing the numbers
int gcd = GCD(n, d);
setNumerator(n / gcd);
setDenominator(d / gcd);
}
// else make the fraction as 0
else
{
numerator = 0;
denominator = 1;
}
}
// setting the numerator
void Fraction::setNumerator(int n)
{
numerator = n;
}
// setting the denominator
void Fraction::setDenominator(int d)
{
denominator = d;
}
// returning the numerator
int Fraction::getNumerator()
{
return numerator;
}
// returning the denominator
int Fraction::getDenominator(){
return denominator;
}
// overloaded addition operator
Fraction Fraction::operator +(Fraction f)
{
int newNumer = (numerator * f.getDenominator() + denominator * f.getNumerator());
int newDenom = (denominator * f.getDenominator());
Fraction result(newNumer, newDenom);
return result;
}
// overloaded subtraction operator
Fraction Fraction::operator -(Fraction f)
{
int newNumer = (numerator * f.getDenominator() - denominator * f.getNumerator());
int newDenom = (denominator * f.getDenominator());
Fraction result(newNumer, newDenom);
return result;
}
// overloaded multiplication operator
Fraction Fraction::operator *(Fraction f)
{
int newNumer = numerator * f.getNumerator();
int newDenom = denominator * f.getDenominator();
Fraction result(newNumer, newDenom);
return result;
}
// overloaded division operator
Fraction Fraction::operator /(Fraction f)
{
int newNumer = (numerator * f.getDenominator());
int newDenom = (denominator * f.getNumerator());
Fraction result(newNumer, newDenom);
return result;
}
// overloaded extraction operator for cout
ostream& operator <<(ostream& out, const Fraction& f)
{
Fraction newF = f;
if (f.numerator < 0 && f.denominator > 0)
{
newF.setNumerator(newF.numerator * -1);
out << "-" << newF.numerator << "/" << newF.denominator;
}
else if (f.numerator > 0 && f.denominator < 0)
{
newF.setDenominator(newF.denominator * -1);
out << "-" << newF.numerator << "/" << newF.denominator;
}
else
{
out << f.numerator << "/" << f.denominator;
}
return out;
}
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
