problème d'exceptions, pas d'erreur
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:
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:
};
#endif |
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 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;
} |
et enfin le main:
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 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;
} |
(je vous passe le fichier Except, c'est une classe issus de la classe exceptions)
et voici ce que me dit la console:
Code:
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 |
voilà, quelqu'un voit un prolbème?
merci d'avance