>What am I doing wrong
I told you what you're doing wrong. Now I'll spell it out for you. Everything in red is wrong.
Fraction operator+ (const Fraction& firval, const Fraction& secval)
{
Fraction result;
short mult = gcd( numerator, denominator);
result.denominator = (denominator * secval.denominator) / mult;
result.numerator = (numerator * secval.denominator) + (secval.numerator * denominator);
result.reduce();
return result;
}
Tell me where you're getting the values of numerator and denominator in the red parts.