#include "person.hh" #include Person::Person(const std::string& name, uint money) : name_{ name } , money_{ money } {} std::vector Person::enumerate_nfts() const { std::vector res; for (auto nft = nfts_.begin(); nft != nfts_.end(); nft++) { res.push_back(**nft); } return res; } void Person::add_nft(NFT nft) { nfts_.push_back(std::move(nft)); } NFT Person::remove_nft(const std::string& name) { auto pos = std::find_if(nfts_.begin(), nfts_.end(), [&](NFT const& nft) { return *nft == name; }); if (pos == nfts_.end()) return create_empty_nft(); nfts_.erase(pos); return create_nft(name); } void Person::add_money(uint money) { money_ += money; } bool Person::remove_money(uint money) { if (money > money_) return false; money_ -= money; return true; } uint Person::get_money() const { return money_; } const std::string& Person::get_name() const { return name_; } std::ostream& operator<<(std::ostream& os, const Person& p) { os << "Name: " << p.get_name() << "\nMoney: " << p.get_money() << "\nNFTs:"; if (const std::vector nfts = p.enumerate_nfts(); !nfts.empty()) { for (size_t i = 0; i < nfts.size(); ++i) { os << " " << nfts.at(i); } } os << "\n"; return os; }