fin d'execution se termine par une erreur
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:
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:
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:
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:
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:
1 2 3 4 5 6 7 8
|
#include "commande.h"
void main()
{
commande c;
cout<<c;
} |