blob: 9192f4c378182e448fcdce7bea22655cbfbc2a51 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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;
};
|