Как изменить код, чтобы заработал?
Нет, не должно. 
Вы как раз в main пытаетесь получить приватное значение numerator и иже с ним.
Сделайте в таком случае геттер и сеттер, что бы по фен-шую.
P.S. все действия вместо явных функция можно было бы сделать через перегрузку операторов - так красивее =)
f1.numerator и f1.denominator нельзя вызывать из привата. Сделай для них функции Get и Set в паблике и будет тебе счастье.