Bonjour
Je voudrais creer pointeur sur un tableau de type Arme, Arme etant une structure definie.
Je dois mal m'y prendre, car je compile sans warning ni error mais lorsque je lance le programme, cela plante.
J'ai un SIGSEV , segmentation fault, mais je dois avouer que je ne vois pas ou.
Voici Arme.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 #ifndef ARME_H #define ARME_H typedef enum NomArme { LANCE_ROQUETTE, LANCE_MISSILE, UF_45, RAPTOR, NombreArme = 4 }; typedef struct DefinitionArme { /* Caracteristique fixe de l'arme */ std::string nom; float cadence; }Arme, *pArme; pArme CreationListeArmes (void); #endif
et voici Arme.cpp
L'appel dans le main :
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 #include "arme.h" using namespace std; pArme CreationListeArmes (void) { pArme ListeArme = (pArme) malloc (sizeof(Arme) * NombreArme); /* On creer toutes les armes */ ListeArme[LANCE_ROQUETTE].nom = "Lance Roquette"; ListeArme[LANCE_ROQUETTE].cadence = 80; ListeArme[LANCE_MISSILE].nom = "Lance Missile"; ListeArme[LANCE_MISSILE].cadence = 20; ListeArme[UF_45].nom = "UF 45"; ListeArme[UF_45].cadence = 990; ListeArme[RAPTOR].nom = "Raptor"; ListeArme[RAPTOR].cadence = 678; return ListeArme; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 pArme ListeArme = CreationListeArmes();
Je voudrais savoir ce qui ne va pas, car j'y bloque depuis pas mal de temps et j'avoue mon incompréhension devant ce probleme.
J'ai donc quelques questions :
1 - Le sigsev ne viendrait-il pas du fait que j'utilise des enum pour mon tableau ?
2 - Est ce que j'ai réellement créer un pointeur vers un tableau de type Arme ?
3 - Dans ma fonction, ne faudrait-il pas plutot faire
ListeArme[LANCE_ROQUETTE]->nom = "Lance Roquette"; et non ListeArme[LANCE_ROQUETTE].nom = "Lance Roquette"; ?
Voila, merci de m'avoir lu, bonne journée a vous.
Partager