Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Task;
- struct Step
- {
- Step(Task *task)
- {
- ptask = task;
- }
- virtual bool exec() = 0;
- private:
- Task *ptask = nullptr;
- }
- struct Task_End : public Step
- {
- bool exec() override
- {
- if (!ptask)
- return false;
- if (ptask->steps.empty())
- return false;
- if (ptask->steps.back().get() != this)
- return false;
- auto ptr = ptask->steps.back();
- ptasks->steps.clear();
- return true;
- }
- }
- class Task
- {
- public:
- Task()
- {
- steps.push_back(std::make_shared<Task_End>(this));
- }
- private:
- std::vector<std::shared_ptr<Step>> steps;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement