#include class Currency { private: double monetary_value; double usd_exchange_rate; public: Currency() { monetary_value = 0; usd_exchange_rate = 1; } Currency(double value, double rate) { monetary_value = value; usd_exchange_rate = rate; } double getValue() const { return monetary_value; }; double getUSDExchangeRate() const { return usd_exchange_rate; }; void setValue(double value) { monetary_value = value; return; }; void setUSDExchangeRate(double rate) { usd_exchange_rate = rate; return; }; double toDollars() const { return monetary_value * usd_exchange_rate; }; void setValueFromDollars(double dollarsValue) { monetary_value = dollarsValue / usd_exchange_rate; return; } void addValue(Currency whichWeAdd) { monetary_value = (toDollars() + whichWeAdd.toDollars()) / usd_exchange_rate; } }; class CurrencyView { private: Currency& original; double exchangeRate; public: CurrencyView(Currency& og, double rate); double getValue() const; }; CurrencyView::CurrencyView(Currency& reference, double rate) : original(reference) { exchangeRate = rate; } double CurrencyView::getValue() const { return original.toDollars() / exchangeRate; }