#include "inheritance.hpp" container::container(std::size_t max_size_) : max_size(max_size_) { // intialize storage m_storage = new int[max_size]; } container::~container() { if (m_storage != nullptr) delete m_storage; } void lifo::add(int v) { push(v); } int lifo::get() { return pop(); } void lifo::push(int v) { if (m_top >= max_size) return; m_storage[m_top++] = v; } int lifo::pop() { if (m_top <= 0) return 0; return m_storage[--m_top]; } void fifo::add(int v) { } int fifo::get() { return 0; } int main(int argc, char *argv[]) { container *c = new lifo(2); c->add(1); c->add(2); lifo *b = static_cast (c); b->push(2); delete c; }