Originally Posted by
grumpy
You made a mistake in assuming that friendship is mutual, or what direction it goes.
Fraction_dup has declared Fraction as a friend. That means any member function of Fraction is allowed to access private members of Fraction_dup. However, Fraction_dup is not allowed to access private members of Fraction unless Fraction declares Fraction_dup as a friend.
To put the logic of C++ friendship in human terms, if you declare me as a friend, that doesn't mean I will view you as a friend. It certainly doesn't mean I will grant you access to my privates. :)