Заранее прошу не тереть модеров тему. Хоть и я пишу всё на C++, но в данном случае разницы нету никакой. На дельфи всё почти также.
Есть класс динамической матрицы. Пишу перегрузку оператора =, чтобы можно было легко присваивать матрицы.
В итоге присвоения не происходит. Хоть убей, не пойму что не так в алгоритме присваивания...
class Array2D
{
double **base;
int columnSize;
int rowSize;
public:
Array2D(int arrayColumnSize, int arrayRowSize); //Êîíñòðóêòîð
~Array2D(); //Äåñòðóêòîð
void push(int, int, double psh); // Ââîä
double pop(int i, int j); // Âûâîä
void GetSize(int &n, int &m); // Âûâîä ðàçìåðîâ ìàòðèöû
Array2D &operator=(Array2D &arr);
};
// Êîíñòðóêòîð îáúåêòîâ êëàññà
Array2D::Array2D(int arrayColumnSize, int arrayRowSize)
{
base = new double*[arrayColumnSize];
for ( int i = 0; i < arrayColumnSize; ++i )
base[i] = new double[arrayRowSize];
rowSize = arrayRowSize;
columnSize = arrayColumnSize;
for ( int i = 0; i < columnSize; ++i )
for ( int j = 0; j < rowSize; ++j )
base[i][j] = 0;
}
// Äåñòðóêòîð îáúåêòîâ êëàññà
Array2D::~Array2D()
{
for ( int i = 0; i < columnSize; ++i )
delete[] base[i];
delete[] base;
}
// Ââîä [i, j]-òîãî ýëåìåíòà ìàññèâà
void Array2D::push(int i, int j, double psh)
{
base[i][j] = psh;
}
// Âûâîä [i, j]-òîãî ýëåìåíòà ìàññèâà
double Array2D::pop(int i, int j)
{
return base[i][j];
}
// Âûâîä ðàçìåðîâ ìàòðèöû
void Array2D::GetSize(int &n, int &m)
{
n = columnSize;
m = rowSize;;
}
// присваивание
Array2D &Array2D::operator=(Array2D &arr)
{
int i, j, k, l;
this -> GetSize(i, j);
arr.GetSize(k, l);
if (i != k)
if (j != l)
for (i = 0; i < k; i++)
for (j = 0; j < l; j++)
this -> push( i, j, arr.pop(i, j) );
return *this;
}