salut a tout,
Je commence par remercier tous qu'il mon aide a résoudre mon problème sur le surcharge de l'operateur*.
Ensuite je vous présente mon nouveau problème.J'ai réalisé cette classe est tout marche bien lors d'exécution mais avant que le message qui vous demande
d'apuier sur un bouton pour continuer n'apparaitre une fenêtre apparait et m'informe que article.exe a rencontré un problème et il doit fermer.
Je n'ai pas pu connaitre la raison alors S.V.P aider moi et merci d'avance.
classe article
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
 
#include<iostream>
#include<string>
using namespace std;
class article
{
	string m_libelle;
	double m_prixht,m_tva,m_remise;
	int m_bonus;
public:
	article(string ,double,double,double,int);
	article();
	double calculprixttc();
	bool operator<(article);
	bool operator==(article);
	bool operator!=(article);
	void afficher(ostream &);
	friend ostream &operator<<(ostream &,article);
	friend istream &operator>>(istream &,article &);
};
l'implémentation de classe article
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
 
#include"article.h"
article::article(string libelle,double prixht,double tva,double remise,int bonus)
{
	m_libelle = libelle;
	m_prixht = prixht;
	m_tva = tva;
	m_remise = remise;
	m_bonus = bonus;
}
article::article()
{
	 cout<<"donner le nom d'article";
	cout<<endl;
	cin>>m_libelle;
	cout<<endl;
	cout<<"donner le prix HT";
	cout<<endl;
	cin>>m_prixht;
	cout<<endl;
	cout<<"donner le taux de tva";
	cout<<endl;
	cin>>m_tva;
	cout<<endl;
	cout<<"donner le taux de remise";
	cout<<endl;
	cin>>m_remise;
	cout<<endl;
	cout<<"donner le nombre de point fidelite";
	cout<<endl;
	cin>>m_bonus;
	cout<<endl;
}
 
double article::calculprixttc()
{
	return(m_prixht+(m_prixht*m_tva/100));
}
 
 
bool article::operator<(article a)
{
	if(calculprixttc()<a.calculprixttc())
      return true;
	else 
	  return false;
}
 
bool article::operator!=(article a)
{
	if(calculprixttc()!=a.calculprixttc())
		return true;
	else 
		return false;
}
 
bool article::operator ==(article a)
{
	if(calculprixttc()==a.calculprixttc())
		return true;
	else
		return false;
}
 
ostream &operator<<(ostream &out,article a)
{
	out<<a.m_libelle;
	out<<"\t";
	out<<a.m_prixht;
	out<<"\t";
	out<<a.m_tva;
	out<<"\t";
	out<<a.m_bonus;
	out<<"\t";
	out<<a.m_remise;
	out<<"\t\n";
	return out;
}
istream &operator>>(istream &in,article &a)
{
	cout<<"donner le nom d'article";
	cout<<endl;
	in>>a.m_libelle;
	cout<<endl;
	cout<<"donner le prix HT";
	cout<<endl;
	in>>a.m_prixht;
	cout<<endl;
	cout<<"donner le taux de tva";
	cout<<endl;
	in>>a.m_tva;
	cout<<endl;
	cout<<"donner le taux de remise";
	cout<<endl;
	in>>a.m_remise;
	cout<<endl;
	cout<<"donner le nombre de point fidelite";
	cout<<endl;
	in>>a.m_bonus;
	cout<<endl;
	return in;
}
 
void article::afficher(ostream &out)
{ 
	out<<m_libelle;
	out<<"\t";
	out<<m_prixht;
	out<<"\t";
	out<<m_tva;
	out<<"\t";
	out<<m_bonus;
	out<<"\t";
	out<<m_remise;
	out<<"\t\n";
 
 
}
j'appelle à cette classe dans la classe commande par le pointeur
voici la classe commande
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
 
#include<iostream>
#include "article.h"
using namespace std;
class commande
{
	int m_numero,m_nombreunite;
	article *m_art;
public:
	commande();
~commande();
double	totalcommande();
	void operator++();
	void operator--();
	friend ostream &operator<<(ostream &,commande);
};

l'implémentation de classe commande


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
 
#include "commande.h"
commande::commande()
{
	cout<<"donner numero de commande";
    cin>>m_numero;
    m_art=new article();
	cout<<"donner la qte";
    cin>>m_nombreunite;
}
commande::~commande()
{
	delete m_art;
}
 
double commande::totalcommande()
{
  return(m_art->calculprixttc()* m_nombreunite);
}
 
void commande::operator ++()
{
	m_nombreunite++;
}
 
void commande::operator --()
{
	m_nombreunite--;
}
 
ostream &operator<<(ostream &out,commande c)
{
	out<<c.m_numero;
	out<<endl;
	c.m_art->afficher(out);
	out<<"\t";
	out<<c.m_nombreunite;
	out<<"\t"; 
	out<<c.m_art->calculprixttc();
	cout<<"\t";
	out<<c.totalcommande();
	return out;
}
la fonction main juste pour tester la creation puis l'affichage d'un objet commande
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
#include "commande.h"
void main()
{
 
	commande c;
	cout<<c;
}