Hoj,
mám tady několik menších problémů a bohužel opravdu nevím jak na ně. První je v destruktoru třídy který mi odmítá uvolňovat paměť tak jak bych si představoval (furt mám memory leak) a druhý problém je s šablonovejma operátorovejma funkcema který mi při kompilaci házej chyby (něco se špatným použitím šablon).
Za pomoc budu vděčný neb už opravdu nemám nápady ani trpělivost to řešit .
template <class T>
class matrix
{
T **dataCore;
int width;
int height;
bool fail;
public:
matrix(int width,int height);
matrix(matrix<T> &givenMatrix);
~matrix();
matrix& operator=(matrix<T> &givenMatrix);
matrix operator+(matrix<T> &givenMatrix);
int returnWidth() {return width;}
int returnHeight() {return height;}
bool isFail() {return fail;}
};
template <class T>
matrix<T>::matrix(int width,int height)
{
dataCore = new T* [width];
for (int i=0;i<width;++i)
{
dataCore[i] = new T [height];
}
}
template <class T>
matrix<T>::matrix(matrix<T> &givenMatrix)
{
this->~matrix();
matrix(givenMatrix.returnWidth(),givenMatrix.returnHeight());
for (int i=0;i < width;++i)
{
for (int y=0;y < height;++y)
{
dataCore[i][y] = givenMatrix.dataCore[i][y];
}
}
}
template <class T>
matrix<T>::~matrix()
{
for (int i=0;i < width;++i)
{
delete [] dataCore[i];
}
delete [] dataCore;
}
template <class T>
matrix& matrix<T>::operator=(matrix<T> &givenMatrix)
{
matrix(givenMatrix);
return *this;
}
template <class T>
matrix matrix<T>::operator+(matrix<T> &givenMatrix)
{
if (width==givenMatrix.returnWidth() && height==givenMatrix.returnHeight() && this!=&givenMatrix)
{
matrix temp(width,height);
for (int i=0;i < width;++i)
{
for (int y=0;y < height;++y)
{
temp.dataCore[i][y] = dataCore[i][y] + givenMatrix.dataCore[i][y];
}
}
return temp;
}
else
{
matrix temp(1,1);
temp.fail=true;
return temp;
}
}