Probleme de auto-destruction virtuel d'une classe
Bonjour,
Je suis un debutant en C++. Je souhaite enrichir mes connaissances informatiques en fesant de C++. Mon objectif est de finir le C++ avant les vacances de Noel. Mon probleme c'est que je ne suis pas capable de faire une auto-destruction virtuel d'une classe. Lorsque je test mon code, mon IDE affiche qu'il y a une Exception non gérée. Quelqu'un peux m'aider?
armeAssaut.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #ifndef DEF_ARMEASSAUT
#define DEF_ARMEASSAUT
#include <iostream>
#include "Fusil.h"
class armeAssaut : public Fusil
{
protected:
double m_tauxBalle;
public:
virtual void information() const;
armeAssaut();
virtual ~armeAssaut();
};
#endif |
Fusil.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #ifndef DEF_FUSIL
#define DEF_FUSIL
class Fusil
{
protected:
double m_dommage;
double m_distance;
double m_mobilite;
public:
virtual void information() const;
Fusil();
virtual ~Fusil();
};
void afficher(Fusil const& x);
#endif |
Sniper.h
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #ifndef DEF_SNIPER
#define DEF_SNIPER
#include <iostream>
#include "Fusil.h"
class Sniper : public Fusil
{
protected:
double m_precision;
public:
virtual void information() const;
Sniper();
virtual ~Sniper();
};
#endif |
armeAssaut.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include "armeAssaut.h"
#include "Fusil.h"
#include <iostream>
using namespace std;
void armeAssaut::information() const
{
cout << "Arme d'assault" << endl;
}
armeAssaut::armeAssaut()
{
m_dommage = 0.74;
m_distance = 0.74;
m_mobilite = 0.65;
m_tauxBalle = 0.50;
}
armeAssaut::~armeAssaut()
{
delete this;
} |
Fusil.cpp
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
| #include "Fusil.h"
#include <iostream>
using namespace std;
Fusil::Fusil()
{
m_dommage = 0;
m_distance = 0;
m_mobilite = 0;
}
void Fusil::information() const
{
cout << "Arme" << endl;
}
void afficher(Fusil const& x)
{
x.information();
}
Fusil::~Fusil()
{
delete this;
} |
main.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| #include <iostream>
#include "Fusil.h"
#include "armeAssaut.h"
#include "Sniper.h"
using namespace std;
int main()
{
Fusil *x(0);
x = new armeAssaut;
x->information();
delete x;
system("pause");
return 0;
} |
Sniper.cpp
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include "Sniper.h"
#include "Fusil.h"
#include <iostream>
using namespace std;
void Sniper::information() const
{
cout << "Sniper" << endl;
}
Sniper::Sniper()
{
m_dommage = 0.89;
m_distance = 1;
m_mobilite = 1;
m_precision = 0.87;
}
Sniper::~Sniper()
{
delete this;
} |