Чтобы получить использование, которое вы описали:
int a = 5;
std::cout << "You have: " << usd(a) << std::endl;
Вам просто нужно usd(a)
, чтобы вернуть что-то, для чего у вас есть оператор ostream<<
, например std::string
, а не пользовательский * Требуется оператор 1007 *.
Например:
std::string usd(int amount)
{
return "$" + std::to_string(amount) + " USD";
}
Вы можете написать другие функции для печати в других валютах или для конвертации между ними, например, c, но если все, что вы хотите для обработки USD, этого было бы достаточно.
Если бы вы использовали класс, представляющий деньги, вы могли бы написать ostream<<
для этого класса, и вам вообще не нужно было бы вызывать функцию ( учитывая, что по умолчанию ostream<<
печатает USD)
class Money
{
int amount;
};
std::ostream& usd(std::ostream& os, Money value) {
os << "$" << value.amount << " USD";
return os;
}
int main(int argc, char** argv)
{
Money a{5};
std::cout << "You have: " << a << std::endl; // Prints "You have: $5 USD"
return 0;
}