Работаю в консольном режиме. Создаю класс в конструкторе у которого объявляю двумерный динамический массив(квадратная матрица). Там же его и заполняю. Т.к. массив динамический, то имеется и указатель на начало массива. В классе есть процедурка вывода на экран. Далее в main() пытаюсь сделать следующее: создаю 2 квадратные матрицы, вывожу их на экран. Все делается на описанных процедурах в классе. Но, в результате выводится на экран две одинаковые матрицы. Я понимаю, что я неправильно работаю с указателями. Вроде до вызова процедуры Show() указатели различные, но после входа в нее они становятся одинаковыми. Подскажите где ошибка. Вот собственно исходник:
Код | //---------------------------------------------------------------------------
#include <clx.h> #include <iostream> #include <conio> #include <stdlib> using namespace std;
//---------------------------------------------------------------------------
class Matrix { public: /* ------------- constructor --------------------- */ Matrix(int count) { lenght=count; point = new double*[count]; for (int i=0; i<count; i++) point[i] = new double[count]; randomize();
for (int i=0; i<count; i++) for (int j=0; j<count; j++) point[i][j]=random(10); }; /* ------------- destructor ---------------------- */ ~Matrix() { delete[] point; } /* ------------- output to screen ------------------ */ void Show() { for (int i=0; i<lenght; i++) { for (int j=0; j<lenght; j++) cout << point[i][j] << " "; cout << '\n'; } }
private:
double **point; int lenght; };
/* ------------- main() -------------------------- */ int main() { Matrix mas(7),mas2(7);
mas.Show(); cout << endl;
cout <<"----------------------" << '\n'; mas2.Show();
getch(); mas.~Matrix(); mas2.~Matrix();
return 0; } //---------------------------------------------------------------------------
|
|