Jommiey

Lektion3_5

Nov 19th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.17 KB | None | 0 0
  1. class Menu_Item
  2. {
  3. public:
  4.   Menu_Item(string const& t) : title(t) {}
  5.   virtual ~Menu_Item() = default;
  6.   virtual void execute() = 0;
  7. private:
  8.   string title;
  9. };
  10.  
  11. class Menu : public Menu_Item
  12. {
  13. public:
  14.   Menu(string const& t) : Menu_Item(t) {}
  15.   ~Menu() { /* delete all items in list */ }
  16.   void add_menu_item(Menu_Item* i) { item_list.push_back(i); }
  17.   void execute() { /* user chose one menu item and execute i */ }
  18. private:
  19.   vector<Menu_Item*> item_list;
  20. };
  21.  
  22. int main()
  23. {
  24.   Menu_Item* start { new Menu("Start") };
  25.   start->add_menu_item(new Load_Game("Läs in sparat spel"));
  26.   start->add_menu_item(new Save_Game("Spara spelet"));
  27.   start->add_menu_item(new Highscore("Poängställning"));
  28.   Menu_Item* options { new Meny("Alternativ...") };
  29.   start->add_menu_item(options);
  30.   options->add_menu_item(new Keyboard_Settings("Tangentbordsalternativ"));
  31.   options->add_menu_item(new Graphic_Settings("Grafikalternativ"));
  32.   options->add_menu_item(new Sound_Settings("Ljudalternativ"));
  33.   start->execute();
  34.   delete start;
  35. }
  36.  
  37. /**
  38. Om destruktorn inte är virtuell, kommer den bara kallas för basklassen, och inte
  39. för subklasserna. Detta skapar minnesläckor.
  40. **/
Advertisement
Add Comment
Please, Sign In to add comment