J'ai créé ce simple objet en C++:retour objet avec pointeur dans ce
class Array
{
int Size;
int * pArr;
public:
explicit Array(int InSize = 0)
{
Size=InSize;
if (Size)
pArr = new int[Size];
else
pArr = NULL;
}
Array(const Array & InArray)
{
Size=InArray.Size;
if (Size)
pArr=new int[Size];
else
pArr=NULL;
}
~Array()
{
if (pArr)
{
delete []pArr;
Size=0;
}
}
};
Je suis en train de surcharger l'opérateur + de la manière suivante:
Array operator+(const Array &LOpArray,const Array &ROpArray)
{
int MinSize=LOpArray.Size<ROpArray.Size ? LOpArray.Size : ROpArray.Size ;
Array ResArray;
if (LOpArray.Size<ROpArray.Size)
ResArray=ROpArray;
else
ResArray=LOpArray;
for (int i=0;i<MinSize;i++)
ResArray.pArr[i]=LOpArray.pArr[i]+ROpArray.pArr[i];
return(ResArray);
}
affectation est définie comme suit:
Array& Array::operator=(const Array &ROpArray)
{
if (pArr!=ROpArray.pArr)
{
Size=ROpArray.Size;
pArr=new int[Size];
for (int i=0;i<Size;i++)
pArr[i]=ROpArray.pArr[i];
}
return (*this);
}
Le problème est quand je l'utilise comme:
Array A1(20),A2(8),A4;
....//initializing pointer contents
A4=A1+A2;
alors A4 a des valeurs correctes (c.-à-d. size = 20 et new, non NULL, int pointeur) mais toutes les valeurs pointées ont des valeurs de déchet. le débogage a montré que dans l'opérateur + les valeurs de la fonction sont effectivement correctes mais elles sont supprimées lors du retour de l'opérateur + fonction
Qu'est-ce que je fais mal?
Veuillez modifier votre article pour le formatage. J'ai fait les premières lignes pour vous montrer à quoi il doit ressembler. N'utilisez pas d'onglets. –
Je l'ai réédité .... ou alors j'espère. –
Beaucoup mieux, merci! –