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. -
-
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 -
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!) -
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