#include class container { public: const std::size_t max_size; container() = delete; container(std::size_t max_size); virtual ~container(); virtual void add(int v) = 0; virtual int get() = 0; protected: int *m_storage = nullptr; }; class lifo : public container { public: lifo(std::size_t max_size) : container(max_size) {} void add(int v) override; int get() override; void push(int v); int pop(); private: unsigned m_top = 0; }; class fifo : public container { fifo(std::size_t max_size) : container(max_size) {} void add(int v) override; int get() override; };