I have started hand coding all the required operators, bounds checking
etc. specific to my project requirement. ( inheritance heirarchy :
MyDouble <- MyPrice <- MyMoney )
If you've got a careful and complete specification of how
your money class is supposed to behave, you are already
much farther along than the typical application involving
money. Eventually most such projects wind up here asking
how they get the roundoff of pennies correct. It's a lot
of fun telling them that I can't quite read their spec
from where I'm sitting, then having them say they don't
have a spec. Usually they get confused at that point.
Just a suggestion: Consider whether you really need that
inheritance. Consider whether what you really want is a
Currency class. (Or maybe call it Cash or Money or some
such.) Then when you have a price you can make that class
contain a Currency as a data member.
So Currency may not be a kind of Price, nor Price a kind
of Currency. But a Price may have a Currency value.
Why do it that way? Well, maybe a Price is different
to different people, cross border for example. And
the difference may not simply be the exchange rate.
Without getting too much into your specific app it's hard
to know whether the inheritance is the correct approach.
Socks