Overloaded Arithmetic Operations on fractions

Hey, I'm 100% new to Overloading Operators, I don't fully get the syntax.

The goal here is trying to divide fractions. Fractions are stored within a class.

My main question is, how do I need to fix my syntax to make it work? I have a lot of red lines...

Resource File:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Mixed Mixed::operator/ (const Mixed mixed1, const Mixed mixed2)
{
	Mixed fraction;

	mixed1.ToFraction();
	mixed2.ToFraction();
	fraction.numerator = (mixed1.numerator * mixed2.denominator);

	fraction.denominator = (mixed2.numerator * mixed1.denominator);

	fraction.Simplify();
	return fraction;

}
void Mixed::ToFraction()
{
	if((numerator==0)&&(denominator==0))
		cout << integer << '/' << '1' << endl;
	else
	{
		if(integer<0)
			numerator = (integer*denominator) - numerator;
		else
			numerator = (integer*denominator) + numerator;

		integer = 0;
		cout << numerator << '/' << denominator << endl;
	}
}
void Mixed::Simplify()
{
	int greatestCommonDenominator = gcd(numerator,denominator);

	cout << "This is the LCD: " << greatestCommonDenominator << endl;

	if(greatestCommonDenominator==0)
		cout << integer << endl;
	else if((denominator/greatestCommonDenominator != 0)&&(numerator/greatestCommonDenominator != 0))
	{	
		numerator=numerator/greatestCommonDenominator;
		denominator=denominator/greatestCommonDenominator;
		if(integer != 0)
			cout << integer << ' ';
		cout << numerator << "/" << denominator << endl << endl;
	}
}
int Mixed::gcd(int a, int b)
{
	if(b == 0)
		return a;
	else
		return gcd(b, a%b);
}

Header File:
(It's within Public, should it be a friend?)
1
2
 
	Mixed operator/ (const Mixed mixed1, const Mixed mixed2);

Testing Code:
1
2
	  Mixed  m2(-1,2,4),m8(0,12,24);
	  cout << "(m2 / m8) = " << (m2/m8) << '\n';


Any and all advice or resources would be appreciated!
Last edited on
Topic archived. No new replies allowed.