problème surcharge operator+ (UNIX)
Bonsoir à tous.
Je rencontre un problème avec la surcharge de l'opérateur+.
En fait, je dois gèrer les pièces d'un musée; je dois donc pouvoir rentrer un nom, date, prix d'achat,...
Pour le prix d'achat de la pièce, on me dit que je dois pouvoir le modifier en ajoutant ou en retirant une somme d'argent. Je souhaiterais donc pour cela surcharger les opérateurs + et -.
Pour ce faire je procède de la façon suivante:
Code dans PieceMusee.h:
Code:
1 2
| PieceMusee operator+(const float montant);
PieceMusee operator-(const float montant); |
Code dans PieceMusee.cxx:
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
| PieceMusee PieceMusee::operator+ (const float montant)
{
PieceMusee d(*this);
if( montant > 0)
{
d.PrixPiece = d.PrixPiece + montant;
/*dans le cas ou la piece dépasse une certaine valeur je dois changer une variable membre de valeur (un bool)*/
if(getPrixPiece() > 50000 && getPretPiece() == true)
d.PretPiece = false;
}
return d;
}
PieceMusee PieceMusee::operator- (const float montant)
{
PieceMusee d(*this);
if(montant > getPrixPiece())
{
d.PrixPiece = d.PrixPiece - montant;
if((getPrixPiece() < 50000) && (getPretPiece() == false ))
d.PretPiece = true;
}
return d;
} |
Appel de mes opérateurs surcharger dans main.cxx:
Code:
1 2 3 4
| cout<<"Veuillez saisir la valeur a ajouter: ";
float Pa;
cin>>Pa;
*pm1 = *pm1 + Pa; |
Je travaille avec un objet alloué dynamiquement:
Code:
1 2 3
| pm1 = new PieceMusee;
pm1 est bien de type PieceMusee* |
Voilà donc mon code. Maintenant, lorsque je lance la compilation pas de problème. (Mon makefile fonctionne parfaitement).
Par contre quand je fais appel à mon opérateur surcharger, j'ai l'erreur suivante qui se produit:
Code:
BUS ERROR (core dumped)
Quelqu'un pourrait-il me dire ce que signifie ce message et ce que je pourrais faire pour ne plus l'avoir?
Je vous remercie d'avance pour votre aide.