#include "Money.h" Money::Money(int value, Currency currency) : value(value), currency(currency) { } Money& Money::operator=(Money money) { value = money.getValue(); currency = money.getCurrency(); return *this; } Money &Money::operator=(Money *money) { value = money->getValue(); currency = money->getCurrency(); return *this; } Money Money::operator+(Money &a) { if(currency == a.currency) { return Money(value + a.value); }else return Money(-1, Currency(CurrencyValue::USD)); } Money Money::operator-(Money &a) { if(currency == a.currency) { return Money(value - a.value); }else return Money(-1, Currency(CurrencyValue::USD)); } const std::unique_ptr Money::operator++(int) { value++; return std::make_unique(this); } const std::unique_ptr Money::operator--(int) { value--; return std::make_unique(this); } int Money::getValue() { return value; } Currency Money::getCurrency() { return currency; } std::unique_ptr Money::operator+(std::unique_ptr &a) { if(currency == a->getCurrency()) { return std::make_unique(Money(value + a->getValue())); }else return std::make_unique(Money(-1, Currency(CurrencyValue::USD))); } std::unique_ptr Money::operator-(std::unique_ptr &a) { if(currency == a->getCurrency()) { return std::make_unique(Money(value - a->getValue())); }else return std::make_unique(Money(-1, Currency(CurrencyValue::USD))); } std::unique_ptr Money::operator=(std::unique_ptr money) { value = money->getValue(); currency = money->getCurrency(); return std::make_unique(Money(value, currency)); }