Bonjour,
j'ai fait un petit programme pour m'entraîner, et il marche très bien, il affiche ce que je veux, mais le problème, mes exceptions s'affichent quand même.
Problème d'exception, ou problème de segfault?
voici mes codes en entier:
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 /* Auteur : phast fichier : Perso.h Date de création : mar. déc. 9 2008 Rôle : classe mère générale à tous les persos. */ #ifndef HEADER_PERSO #define HEADER_PERSO #include <string> #include "Except.h" //pour gerer les éxceptions #include <iostream> using namespace std; class Perso //classe abstraite = plus d'une fonction virtuel pure { public: string getNom() const; int getVie() const; //fonction constante void setNom(const string newNom); void setVie(const int newVie); virtual void sePresenter() const = 0; //fonction virtuel pure virtual void attaquer(Perso *persoAdv, string nomAdv)const = 0; protected: int *m_vie; string *m_nom; private: }; class Guerrier : public Perso { public: Guerrier(); Guerrier(const string nom); ~Guerrier(); void sePresenter() const; void attaquer(Perso *adversaire, string nomAdv) const; protected: private: }; #endifet enfin 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 /* Auteur : phast fichier : Perso.cpp Date de création : mar. déc. 9 2008 Rôle : classe mère générale à tous les persos. */ #include "Perso.h" /************************************************ * * * implémentation de la classe abstraite Perso * * * *************************************************/ int Perso::getVie() const { return *m_vie; } string Perso::getNom() const { return *m_nom; } void Perso::setNom(const string newNom) { *m_nom = newNom; } void Perso::setVie(const int newVie) { *m_vie = newVie; } /********************************************** * * * implémentation de la classe Guerrier, * * issus de la classe Perso * * * ***********************************************/ Guerrier::Guerrier() { m_vie = new int(100); m_nom = new string("l'inconnue"); } Guerrier::Guerrier(const string nom) { m_vie = new int(100); m_nom = new string(nom); } void Guerrier::sePresenter() const { cout << "Bonjour vilain, comment oses tu me parler? je suis un guerrier, et je m'appelle " << *m_nom << " et j'ai encore " << *m_vie << " points de vie" << endl ; } void Guerrier::attaquer(Perso *adversaire, string nomAdv) const { cout << *m_nom << " attaque avec une superbe hache " << nomAdv << " et lui défonce sa gueule puisque c'est un guerrier " << endl; } Guerrier::~Guerrier() { delete m_vie; delete m_nom; }
(je vous passe le fichier Except, c'est une classe issus de la classe exceptions)
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57 /* Auteur : phast fichier : main.cpp Date de création : mar. déc. 9 2008 Rôle : classe mère générale à tous les persos. */ #include "Perso.h" int main(int argc, char* argv[]) { Guerrier *moi, *gol; try{ moi = new Guerrier("Victor"); throw Erreur(1, "ERREUR lors de initialisation de la variable moi", 2); } catch(const exception& e) { cout << "Erreur numéro 1 : " << e.what() << endl; } try{ gol= new Guerrier("goliath"); throw Erreur(2, "Erreur lors de l'initialisation de la variable goliath", 2); } catch(const exception &e) { cout << "Erreur numéro 2 : " << e.what() << endl; } try{ moi->sePresenter(); moi->setNom("Phast"); moi->setVie(500); moi->sePresenter(); gol->sePresenter(); gol->setNom("mechant"); gol->setVie(50); gol->sePresenter(); moi->attaquer(gol,string("mechant")); throw Erreur(3, "ERREUR lors de l'appels des différentes fonctions"); } catch(const exception &e) { cout << "Erreur numéro 3 : " << e.what() << endl; } delete moi; delete gol; return 0; }
et voici ce que me dit la console:
voilà, quelqu'un voit un prolbème?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Erreur numéro 1 : ERREUR lors de initialisation de la variable moi Erreur numéro 2 : Erreur lors de l'initialisation de la variable goliath Bonjour vilain, comment oses tu me parler? je suis un guerrier, et je m'appelle Victor et j'ai encore 100 points de vie Bonjour vilain, comment oses tu me parler? je suis un guerrier, et je m'appelle Phast et j'ai encore 500 points de vie Bonjour vilain, comment oses tu me parler? je suis un guerrier, et je m'appelle goliath et j'ai encore 100 points de vie Bonjour vilain, comment oses tu me parler? je suis un guerrier, et je m'appelle mechant et j'ai encore 50 points de vie Phast attaque avec une superbe hache mechant et lui défonce sa gueule puisque c'est un guerrier Erreur numéro 3 : ERREUR lors de l'appels des différentes fonctions
merci d'avance
Partager