Advertisement
Guest User

shared hm hm

a guest
May 5th, 2021
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.58 KB | None | 0 0
  1. class Task;
  2.  
  3. struct Step
  4. {
  5.     Step(Task *task)
  6.     {
  7.         ptask = task;
  8.     }
  9.     virtual bool exec() = 0;
  10.  
  11. private:   
  12.     Task *ptask = nullptr;
  13. }
  14.  
  15. struct Task_End : public Step
  16. {
  17.     bool exec() override
  18.     {
  19.         if (!ptask)
  20.             return false;
  21.         if (ptask->steps.empty())
  22.             return false;
  23.         if (ptask->steps.back().get() != this)
  24.             return false;
  25.        
  26.         auto ptr = ptask->steps.back();
  27.        
  28.         ptasks->steps.clear();
  29.         return true;
  30.     }
  31. }
  32.  
  33. class Task
  34. {
  35. public:
  36.     Task()
  37.     {
  38.         steps.push_back(std::make_shared<Task_End>(this));
  39.     }
  40.  
  41. private:
  42.     std::vector<std::shared_ptr<Step>> steps;
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement