diff options
Diffstat (limited to 'include/book_store/member.hh')
| -rw-r--r-- | include/book_store/member.hh | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/include/book_store/member.hh b/include/book_store/member.hh new file mode 100644 index 0000000..0796a11 --- /dev/null +++ b/include/book_store/member.hh @@ -0,0 +1,41 @@ +#ifndef MEMBER_HH +#define MEMBER_HH + +#include <cstddef> + +#include "book.hh" +#include "person.hh" +#include "price.hh" + +namespace book_store::consumer { +class member : person { + +private: + product::book::book::size_type _books_bought; + product::price::usd _amount_spent; + +public: + member(std::string last_name, std::string first_name, std::size_t member_id) + : person(std::move(last_name), std::move(first_name), member_id), + _books_bought(0), _amount_spent(0) {} + member(std::string last_name, std::string first_name, std::size_t member_id, + product::book::size_type books_baught, + product::price::usd amount_spent) + : person(std::move(last_name), std::move(first_name), member_id), + _books_bought(books_baught), _amount_spent(amount_spent) {} + member() = default; + member(const member &) = default; + member(member &&) = default; + + [[nodiscard]] auto books_bought() const noexcept -> product::book::size_type; + [[nodiscard]] auto amount_spent() const noexcept -> product::price::usd; + + auto books_bought(product::book::size_type books_bought) noexcept -> void; + auto amount_spent(product::price::usd amount_spent) noexcept -> void; + + auto operator=(const member &) -> member & = default; + auto operator=(member &&) -> member & = default; +}; +} // namespace book_store::consumer + +#endif // MEMBER_HH |