I'm trying to make Fraction object and overload a few operators. The problem is at the moment I want to multiply two fractions, because it returns fraction with numerator equals to -858993460 as well as denominator.
Fraction::Fraction(int numerator, int denominator)
{
if (denominator == 0)
throw std::overflow_error("Denominator can't be 0");
else {
this->numerator = numerator;
this->denominator = denominator;
if (this->numerator < 0 && this->denominator < 0) {
this->numerator = -this->numerator;
this->denominator = -this->denominator;
}
}
}
Fraction::Fraction(const Fraction & scndFraction)
{
if (scndFraction.denominator == 0)
throw std::overflow_error("Denominator can't be 0");
else {
this->numerator = scndFraction.numerator;
this->denominator = scndFraction.denominator;
}
}
Fraction & Fraction::operator*(const Fraction& scndFraction)
{
// TODO: Sem vložte návratový příkaz.
Fraction newFraction(this->numerator*scndFraction.getNumerator(),
this->denominator*scndFraction.getDenominator());
return newFraction;
}
And main.cpp
#include "Fraction.h"
#include <Windows.h>
int main() {
//HANDLE hnd = GetStdHandle(STD_OUTPUT_HANDLE);
//SetConsoleTextAttribute(hnd, FOREGROUND_BLUE);
Fraction first(1, 2);
std::cout << first.getFraction() << std::endl;
Fraction second(1, 2);
std::cout << second.getFraction() << std::endl;
Fraction third = second * first;
std::cout << third.getFraction() << std::endl;
getchar();
return 0;
}