C++ PROBLEME....

Fermé
Grafitos - 12 déc. 2003 à 13:59
 LolO - 12 déc. 2003 à 19:07
Bonjour
Petit probleme mémoire... (visual c++)


#include <stdafx.h>
#include <iostream.h>

class pile {
private:
int * tableau;
public:
pile(int i);

~pile();
pile operator+(const pile& xpile);
};
pile::pile(int i)
{
tableau=new int[i];
}
pile::~pile()
{
delete []tableau;
}
pile pile::operator+(const pile& xpile)
{
pile mapile(10);
return mapile;

}

void main()
{
pile ispile(10);
pile result(10);
pile mapile(10);
result=mapile+ispile;
}




Pourquoi ce programme ne marche pas?? Pourtant le destructeur est correct.Lorsque l'on enleve le delete du destructeur, cela marche, et si on enleve les operateur surchargé, et que l'on laisse le delete cela marche aussi...
Pouvez vous m'eclairez.
Merci

5 réponses

Bonjour,
commence par regarder ce que retourne ton opérateur : un objet sur le tas.
Quand tu sors de l'opérateur il est détruit.
Préconise un pointeur.
0
désolé je comprend pas trop: "préconise un pointeur" cad?
merci a+
0
Excuse j'avais pas le temps de détailler.
Ecris ton opérateur de cette façon :

pile *pile::operator+(const pile& xpile)
{
pile *mapile = new pile(10);
return mapile;
}

--
LolO
0
binary '=' : no operator defined which takes a right-hand operand of type 'class pile *' (or there is no acceptable conversion)
C'est l'erreur qu'il me marque pour "result=mapile+ispile"
:/
a+ (merci!)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
oui cest normal il faut que tu types ta variable "result" comme un pointeur
déclare la comme ceci :
int main(...) {
pile *result;
....
result = mypile + ispile;
....
}

--
LolO
0