#pragma once #include "json.hpp" #include "entry.h" #include namespace entry { class Item : public Entry { public: static std::shared_ptr create(const nlohmann::json& data); virtual ~Item() {} protected: Item(const nlohmann::json& data) : Entry(data) {} }; class Substantial { public: virtual int getCost(void) const = 0; virtual double getWeight(void) const = 0; virtual ~Substantial() {} }; std::string genText(const Substantial& s); }