Jommiey

Lektion3_7

Nov 19th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.95 KB | None | 0 0
  1. class Race
  2. {
  3. public:
  4.   virtual void eat() = 0;
  5.   //...
  6. };
  7.  
  8. class Sun_Insensitive
  9. {
  10.   //...
  11. };
  12.  
  13. class Strong
  14. {
  15.   //...
  16. };
  17.  
  18. class Repulsive
  19. {
  20.   //...
  21. };
  22.  
  23. class Intelligent
  24. {
  25.   //...
  26. };
  27.  
  28. template <typename T>
  29. class Human : public T, public Race
  30. {
  31. public:
  32.   void eat() override;
  33.   //...
  34. };
  35.  
  36. template <typename T>
  37. class Orc : public T, public Race
  38. {
  39. public:
  40.   void eat() override;
  41.   //...
  42. };
  43.  
  44. template <typename T>
  45. class Uruk_Hai : public T, public Race
  46. {
  47. public:
  48.   //...
  49. };
  50.  
  51. Uruk_Hai* uruk = new Uruk_Hai;
  52. uruk->eat();
  53.  
  54. int eat_dinner(Race* dinner_guest)
  55. {
  56.   Uruk_Hai<Repulsive> r = dynamic_cast<Uruk_Hai>(dinner_guest);
  57.   if(r == nullptr)
  58.   {
  59.     Orc<Repulsive> r = dynamic_cast<Orc>(dinner_guest);
  60.     if(r == nullptr)
  61.     {
  62.       Human<Repulsive> r = dynamic_cast<Human>(dinner_guest);
  63.     }
  64.   }
  65.  
  66.   if (r.is_repulsive())
  67.   {
  68.     return 1;
  69.   }
  70.   return -1;
  71. }
  72.  
  73.  
  74. /*
  75. https://i.imgur.com/kkOi4aS.jpg
  76. */
Advertisement
Add Comment
Please, Sign In to add comment