Указатель-исключение во время выполнения при копировании одного массива в другой внутри функции - PullRequest
0 голосов
/ 14 октября 2019

Основная цель - скопировать массив в конструкторе из функции main(). Использовать cin >> было бы очень легко, но я должен дать конструктору уже определенный массив. Я не получаю никаких ошибок при компиляции программы. Только во время выполнения происходит сбой с этим исключением:

Выдается необработанное исключение: нарушение прав чтения. this-> A было 0x1110112.

Я уже пытался определить эти массивы в классе, хотя я знаю, что это не очень хорошая практика. Но я не могу этого сделать, так как это приведет к ошибкам с указателями в других функциях, определенных в этом классе. Вот что я получил до сих пор:

#include "pch.h"
#include <iostream>
#include <iomanip>
#define size 5
using namespace std;
class Matr
{
private:
    //const int size = 5;
    double **A;
    double *B;
public:
    Matr(double (*a)[size], double b[]) {
        for (int i = 0; i < size; i++) {
            for (int j = 0; j < size; j++) {
                A[i][j] = a[i][j]; //here exception falls
            }
            B[i] = b[i];
        }
    }
};
int main()
{ 
    double A[5][5] = {              {-6,18,15,8,6},
                    {2,11,-18,17,23},
                    {-13,-2,8,-10,-5},
                    {1,13,11,-10,-5},
                    {10,21,8,-1,11} };
    double B[5] = { 0,-8,1,-2,-6 };
    Matr matr(A,B); //define the arrays
}

Я хотел бы определить это для массивов в классе для использования их в других функциях. Это вообще возможно? : D

1 Ответ

0 голосов
/ 14 октября 2019

В конструкторе Matr вы должны выделить память для A и B, используя new.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...