C++ PROBLEME....
Grafitos
-
LolO -
LolO -
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
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.
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.
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
Ecris ton opérateur de cette façon :
pile *pile::operator+(const pile& xpile)
{
pile *mapile = new pile(10);
return mapile;
}
--
LolO
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!)
C'est l'erreur qu'il me marque pour "result=mapile+ispile"
:/
a+ (merci!)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question