no problem. same thing happened to me a long time ago except it was a while loop. it was console and had a whole map on the screen. the function that had the while loop would clear the screen and then make sure the move is valid. i would run it and for some reason just see a blank screen. had to stare at it for 10 mins before i found the while(...);
if (rhs.num < lhs.num && rhs.den < lhs.den);
The above line should not end with a semicolon.
Line below should not end with a semicolon. else (!(rhs.num < lhs.num) && !(rhs.den < lhs.den));
You can't follow an else with a condition, it would need to be elseif to do that. However, you don't need the condition at all. Just a plain else would do.
In fact, because there is a return at line 5, all you would need after that is a simple returnfalse; to satisfy the remaining cases. without any additional code at all.