#include #include #include #include using namespace std; class List { public: List() = default; virtual ~List() = default; virtual void display() = 0; virtual void push_back(string const& element) = 0; }; class Description : public List { public: Description() : elements{} {} void push_back(string const& element) override { int splitpos = element.find_first_of(" "); elements.emplace_back(element.substr(0, splitpos), element.substr(splitpos)); } void display() override { for ( auto element: elements ) { cout << element.first << ": " << element.second << '\n'; } } private: vector> elements; }; class Enumerate : public List { public: Enumerate() : elements{} {} void push_back(string const& element) override { elements.push_back(element); } void display() override { for ( size_t i{0}; i elements; }; int main() { vector html_lists{new Enumerate{}, new Description{}}; html_lists[0] -> push_back("Nemesis"); html_lists[0] -> push_back("Gloomhaven"); html_lists[0] -> push_back("VirginQueen"); html_lists[1] -> push_back("Nemesis SciFi survival horror game"); html_lists[1] -> push_back("Gloomhaven Fantasy legacy game"); html_lists[1] -> push_back("VirginQueen GMT wargame set in the Elizabethian era"); for( List* html_list : html_lists ) { html_list -> display(); } for( List* html_list : html_lists ) { delete html_list; } }