Que veux-tu faire ? (choix : attaquer - boirePotionDeVie - changerArme)
changerArme
Quelle arme voulez-vous prendre ?
0. Epée rouillée
1. Epée aiguisée
2. Epée batarde à 2 mains
3. Glaive de Vercingétorix
4. Lance de chevalier
5. Trident de Poséidon
6. Le canif de Dieu
7. A
8. ???
Segmentation fault
Donc voilà, j'utilise vim sous mac, et je compile de la sorte :
fandekasp$ c++ main.cpp Personnage.cpp Arme.cpp
En faisant des recherches, j'ai cru comprendre qu'on utilisait gdb comme débuggeur (mais ces mêmes personnes compilaient avec gcc, alors je ne sais pas si je peux aussi utiliser gdb.. excusez le zéro qui domine en moi, j'ai un peu de mal avec tout ça ) . C'est pourquoi je viens humblement demander votre avis, que pourrais-je utiliser pour m'en sortir tout seul pour corriger mes erreurs ? merci beaucoup
Sinon, voilà le code spécifique à l'origine de l'erreur... Ne connaissant pas grand chose des tableaux en C++, j'imagine que l'erreur va vous sauter aux yeux looool.
a- sizeof(tableauArmes) c'est le nombres de bytes de ton tableau et pas le nombre d'elements qu'il contient.
b- Tu ne peux pas connaitre a l'execution le nombre d'éléments d'un truc[].
c- Je te conseille grandement d'utiliser std::vector<std::string> a la place.
d- sinon tu définit une CONSTANTE préprocesseur qui vaut le nombre d'armes que tu as défini.
#define CONSTANTE_N 7
string tab[CONSTANTE_N] = { ...}
a- C'est vrai
b- c'est faux, avec les tableaux statiques, on peut le savoir
cf p.ex. http://hermitte.free.fr/Info/C++/libs/luc_lib/array_help.hpp (oubliez le pdf dans cette zone du site, il est mauvais)
c- au détail de l'initialisation si on veut coder le biniou en dur ... vector sera effectivement mieux pour des vraies solutions (où tout sera lu depuis un fichier p.ex.)
d- Cette solution n'en est pas une, si la constante déclarée diffère du nombre d'éléments effectivement déclarés, on va avoir des problèmes.
Perso, j'ai plutôt tendance à post-initialiser la constante avec:
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
* Un wrapper C++ pour sqlite * Une alternative a boost units
* Un wrapper C++ pour sqlite * Une alternative a boost units