@Kryptonit

Почему возникает ошибка доступа к элементу в классе?

Хочу вывести матрицу, однако возникает ошибка доступа в showMatrix(...)
#include <iostream>

class SquareMatrix {
private:
	int n;
	double** fullMatrixPointer;
public:
	SquareMatrix(int dimMatrix) {
		n = dimMatrix; 
		Hello();
		fillMatrix(n, fullMatrixPointer);
		showMatrix(n, fullMatrixPointer);
	}
	void Hello() {
		printf("Hello fill matrix that have dim(3) \n %i", n);
	}
	void fillMatrix(short int n, double** fullMatrixPointer) {
		fullMatrixPointer = new double*[n];
		for (int i = 0; i < n; i++) {
			fullMatrixPointer[i] = new double[n];
			for (int j = 0; j < n; j++) {
				printf("Введите элемент [%i][%i]: ", i, j);
				std::cin >> fullMatrixPointer[i][j];
			}
		}

	}
	void showMatrix(int n, double** fullMatrixPointer) {
		for (int i = 0; i < n; i++) {
			for (int j = 0; j < n; j++) {
				std::cout << fullMatrixPointer[i][j] << '\n';
			}
			std::cout << '\n';
		}
	}
	
};


int main() {
	setlocale(0, "");
	int dimMatrix = 2; 
	SquareMatrix matrix(dimMatrix);
}
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Потому что в fillMatrix вы заполняете не член класса fullMatrixPointer, а параметр функции с точно таким же названием. Если вы включите ворнинги у компилятора, то он вам об этом скажет.

После выхода из функции этот указатель никуда дальше не попадает. И в showMatrix передается незаполненый указатель.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы