Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // Created by Filip Staniul on 20/10/2018.
- //
- #include <string>
- #include <vector>
- class MenuItem {
- public:
- MenuItem(std::string name, std::string command);
- MenuItem(const MenuItem &cMenuItem);
- virtual ~MenuItem();
- virtual void Run() = 0;
- virtual MenuItem *Clone() = 0;
- std::string GetName();
- std::string GetCommand();
- protected:
- std::string _name;
- std::string _command;
- };
- class Menu : public MenuItem {
- public:
- Menu (std::string name, std::string command);
- Menu (std::string name, std::string command, std::vector<MenuItem *> &cMenuItems);
- Menu (const Menu &cMenu);
- ~Menu();
- void Run();
- MenuItem *Clone();
- bool AddMenuItem(MenuItem *item);
- bool RemoveMenuItem (std::string name);
- bool RemoveMenuItem (int index);
- std::vector<MenuItem *> *GetMenuItems();
- private:
- MenuItem *GetItemForCommand(std::string &command);
- void PrintInfo();
- void CopyMenuItems(const std::vector<MenuItem *> &cMenuItems);
- std::vector<MenuItem*> _cMenuItems;
- };
- class MenuCommand: public MenuItem {
- public:
- MenuCommand(std::string name, std::string command);
- MenuCommand(std::string name, std::string command, Command *cCommand);
- ~MenuCommand();
- void AttachCommand (Command * cCommand);
- void Run();
- MenuItem * Clone();
- private:
- Command * _cCommand;
- };
Add Comment
Please, Sign In to add comment