diff options
| author | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:08:27 +0200 |
|---|---|---|
| committer | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:08:27 +0200 |
| commit | c9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c (patch) | |
| tree | 3e4f42f93c7ae89a364e4d51fff6e5cec4e55fa9 /graphs/cpp/caste_or_cast/queen.hh | |
add: graphs et rushs
Diffstat (limited to 'graphs/cpp/caste_or_cast/queen.hh')
| -rw-r--r-- | graphs/cpp/caste_or_cast/queen.hh | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/graphs/cpp/caste_or_cast/queen.hh b/graphs/cpp/caste_or_cast/queen.hh new file mode 100644 index 0000000..9192f4c --- /dev/null +++ b/graphs/cpp/caste_or_cast/queen.hh @@ -0,0 +1,32 @@ +#pragma once + +#include <queue> + +#include "ant.hh" + +//! forward declaration +class Worker; + +/* + * Class representing the Queen Caste + */ +class Queen : public Ant +{ +public: + //! inherit Ant Constructors + using Ant::Ant; + //! the queen will create either a new Provider or Nurturer and push it to + //! eggs_queue_ + void layEgg(); + +private: + /*! + * We should not modify the Colony::workers vector while we + * iterate over it (because in some cases it can lead to undefined behavior) + * To solve this problem, we use a queue so we can save the eggs that the + * queen lay in one round (i.e. one call of Colony::manageAnts) and insert + * them in workers_ vector after we finished iterating. + * */ + std::queue<std::shared_ptr<Worker>> eggs_queue_; + friend class Colony; +}; |
