Bonujour, j'essaie de m'initier au c++, et je me retrouve face a un probleme : je ne comprends pas comment faire pour créé un tableau d'objet. Pour m'entrainer au c++ j'ai recuperé les sujets de la piscine de l'ecole 42 (j'en suis d01 ex03 : https://github.com/jpirsch/piscines/.../d01.en(1).pdf).
J'essaie donc de faire un objet, qui peux créé un tableau d'objet.
Voici mon code :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 #ifndef ZOMBIEHORDE_HPP # define ZOMBIEHORDE_HPP #include <iostream> #include <stdlib.h> #include "Zombie.hpp" #include "ZombieEvent.hpp" class ZombieHorde { private: Zombie *horde[]; public: ZombieHorde(int nbrZombie); void announce(void); }; # endif
Mais mon programme me retourne soit un bus error soit une segmentation fault :Code:
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 #include "ZombieHorde.hpp" ZombieHorde::ZombieHorde(int nbrZombie) { srand(time(0)); ZombieEvent zombie_event("Infecté"); std::string tab[] = {"Daniel", "Moncef", "Louis", "John", "Phillipe"}; int i = 0; while (i < nbrZombie) { this->horde[i] = zombie_event.newZombie(tab[rand() % 5]); i++; } this->horde[i] = NULL; } void ZombieHorde::announce(void) { int i = 0; while (this->horde[i] != NULL) { this->horde[i]->announce(); i++; } } int main(void) { ZombieHorde horde(5); horde.announce(); }
J'avoue etre un peu perdu, je ne vois pas ce qui cloche dans ma classe...Citation:
<Louis (Infecté)> Braiiiiiiinnnssss...
<Daniel (Infecté)> Braiiiiiiinnnssss...
<Phillipe (Infecté)> Braiiiiiiinnnssss...
<Phillipe (Infecté)> Braiiiiiiinnnssss...
<Louis (Infecté)> Braiiiiiiinnnssss...
[1] 89101 bus error ./zombie
J'ai lu sur le net que la fonction vector() pourrait m'aider, mais j'aimerais joué le jeu et faire sans (cette fonction n'est pas autorisé pour les etudiants qui font cette piscine apparemment)
Sachant que je n'ai pas encore fait le destructeur, ca doit venir de lui, parce qu'on dirait que c'est au moment ou le programme se ferme, quoi que je mette dans le programme, ca va s'executer, et mettre le segfault ensuite.
Mais meme en sachant ca je ne vois pas pourquoi il pourrait segfault