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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
PieceMusee operator+(const float montant);
	PieceMusee operator-(const float montant);
Code dans PieceMusee.cxx:
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.