Bonjours à vous !

Je me trouve confronté à un problème assez gênant lors de la réalisation d'un projet tuteuré. Pour vous resituer dans le contexte, je crois créer des zombies, par conséquent des anciens humains contaminés, et qui appartiennent à un groupe.

Le problème est qu'un zombie pointe vers un Groupe de zombie déjà instancié, hors un Groupe est crée à partir d'un zombie déjà instancié lui aussi. Du coups si je corrige l'inclusion cyclique dans l'un ( 'Group does not name a type', elle se présente dans l'autre sous la forme de expected ')' before '*' token sur mon constructeur de Group.

Je vous inclus les fichiers avec en commentaire les opérations que j'ai effectué pour que la seconde erreur apparaîsse.

Zombie.h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#ifndef ZOMBIE_H
#define ZOMBIE_H
#include "./Human.h" 
// [Seconde erreur] : #include "./Group.h"
 
class Zombie : public Human
{
    public:
        static const unsigned short m_CONTAGION_RADIUS=2;
        Zombie(int id, Coordinate coord);
        ~Zombie();
        /* Permet d'ajouter un humain au nombre de victimes contaminés */
        bool hasContamined();
        /* Permet de récuperer le nombre d'humain contaminés par le zombie */
        unsigned short getContagionAmount();
    protected:
    private:
        unsigned short m_contagionAmount;
        Group* m_groupe;
};
 
#endif // ZOMBIE_H
Zombie.cpp

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
#include "Zombie.h"
#include "Group.h" // [Seconde erreur] : Include supprimé
#include "../FloorData/Coordinate.h"
 
Zombie::Zombie(int id, Coordinate coord, *Group myGroup) : Human(id, coord), m_group(myGroup), m_contagionAmount(0)
{
}
 
Zombie::~Zombie()
{
    //dtor
}
 
bool Zombie::hasContamined(){}
 
unsigned short Zombie::getContagionAmount(){}
Group.h

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#ifndef GROUP_H
#define GROUP_H
#include <vector>
#include "Zombie.h" // [Seconde erreur] : Include supprimé
 
class Group
{
    public:
        Group(Zombie* aZombie);
 
        /* Permet de récuperer la liste des groupes instanciés lors de la partie */
        static std::vector<Group*> getGroupList();
        /*  Permet d'ajouter un zombie au groupe ciblé
        *   Param : Le nouveau zombie à ajouter*/
        bool addZombie(Zombie* newZombie);
        /*  Permet de supprimer le zombie en question du groupe *
        *   Param : Le zombie à supprimer */
        bool delZombie(Zombie* aZombie);
        /*  Permet de récuperer la liste des zombies appartenant au groupe ciblé */
        std::vector<Zombie*> getZombieList();
        /*  Permet de récuperer le nombre total de zombies appartenant au groupe ciblé */
        int size();
 
    protected:
    private:
        static std::vector<Group*> GROUP_LIST;
        std::vector<Zombie*> zombiesList;
};
 
#endif // GROUP_H
Group.cpp

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
#include "Group.h"
 // [Seconde erreur] : #include "Zombie.h"
#include <vector>
 
using namespace std;
 
vector<Group*> Group::getGroupList{}
 
Group::Group(Zombie* aZombie)
{
}
 
bool Group::addZombie(Zombie *newZombie){}
 
bool Group::delZombie(Zombie *newZombie){}
 
vector<Zombie*> Group::getZombieList(){}
 
int Group::size(){}

Je sais pas si j'ai réeussi à être clair... Mais j'espère que vous pourrez m'aider !