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 : 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
#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 : 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
#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 : 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
#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 : 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
#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 : 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
#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 : 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
#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 : 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
#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;
}