66 lines
1.7 KiB
C++
66 lines
1.7 KiB
C++
#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> Money::operator++(int) {
|
|
value++;
|
|
return std::make_unique<Money>(this);
|
|
}
|
|
|
|
const std::unique_ptr<Money> Money::operator--(int) {
|
|
value--;
|
|
return std::make_unique<Money>(this);
|
|
}
|
|
|
|
int Money::getValue() {
|
|
return value;
|
|
}
|
|
|
|
Currency Money::getCurrency() {
|
|
return currency;
|
|
}
|
|
|
|
std::unique_ptr<Money> Money::operator+(std::unique_ptr<Money> &a) {
|
|
if(currency == a->getCurrency()) {
|
|
return std::make_unique<Money>(Money(value + a->getValue()));
|
|
}else return std::make_unique<Money>(Money(-1, Currency(CurrencyValue::USD)));
|
|
}
|
|
|
|
std::unique_ptr<Money> Money::operator-(std::unique_ptr<Money> &a) {
|
|
if(currency == a->getCurrency()) {
|
|
return std::make_unique<Money>(Money(value - a->getValue()));
|
|
}else return std::make_unique<Money>(Money(-1, Currency(CurrencyValue::USD)));
|
|
}
|
|
|
|
std::unique_ptr<Money> Money::operator=(std::unique_ptr<Money> money) {
|
|
value = money->getValue();
|
|
currency = money->getCurrency();
|
|
return std::make_unique<Money>(Money(value, currency));
|
|
}
|