Mam program do operacji na macierzach.
Mam problem z usunięciem pamięci z obiektu, który jest wykorzystywany w operatorze.
Przy takim zapisie operacji dodwania:
Macierz wynik=macierz1+macierz2;
działa mi tylko dodawanie na macierzach kwadratowych, ale już na innych nie i wysypuje się błąd pamieciowy gdy program dojdzie do tej lini.
Ma ktoś jakiś pomysł jak temu zaradzić?
class Macierz
{
private:
double ** macierz;
int szer;
int wys;
public:
Macierz();
Macierz(int s, int w);
Macierz(Macierz & m);
~Macierz(void);
Macierz operator+(Macierz & m);
};
//PLIK CPP
Macierz::Macierz()
{
}
Macierz::Macierz(int s, int w): szer(s), wys(w)
{
this->macierz = new double * [szer];
for(int i=0; i<wys; i++)
macierz[i]= new double [wys];
}
Macierz::Macierz(Macierz & m) : szer(m.szer), wys(m.wys)
{
macierz=new double *[m.szer];
for(int i=0; i<m.wys; i++)
macierz[i] = new double[m.szer];
for(int i=0; i<m.szer; i++)
for(int j=0; j<m.wys; j++)
macierz[i][j]=m.macierz[i][j];
}
Macierz::~Macierz(void)
{
for(int x=0; x<szer; x++)
delete [] macierz[x];
delete [] macierz;
}
Macierz Macierz::operator+(Macierz & m)
{
Macierz wynik(szer, wys);
for(int i=0; i<m.szer; i++)
for(int j=0; j<m.wys; j++)
wynik.macierz[i][j]=m.macierz[i][j]+macierz[i][j];
return wynik;
}
//PLIK main.cpp
Macierz macierz1(s,w);
cin>>macierz1;
Macierz macierz2(s,w);
cin>>macierz2;
Macierz wynik=macierz1+macierz2;