Я пытаюсь реализовать простой класс матрицы в cpp, но я получаю эту ошибку
Место чтения нарушения доступа 0xDDDDDDDD
Проблема возникает тольков Visual Studio, в "Clion" это на самом деле работает, но я предпочитаю VS.
мой заголовочный файл выглядит так
.h
#pragma once
#include <iostream>
using namespace std;
class matrix
{
int row, col;
int **mat;
public:
matrix(){}
matrix(int _row, int _col);
matrix(const matrix &m);
~matrix();
void mat_pop(int i, int j, int in) {
this->mat[i][j] = in;
}
matrix& operator=(const matrix &) ;
matrix operator+(const matrix &m) const;
};
.cpp
#include "pch.h"
#include "matrix.h"
matrix::matrix(int _row, int _col):row(_row), col(_col)
{
mat = new int*[row];
for (int i = 0; i < row; i++) {
mat[i] = new int[col]();
}
}
matrix::matrix(const matrix & m)
{
row = m.row;
col = m.col;
mat = m.mat;
}
matrix::~matrix()
{
delete []mat;
}
matrix& matrix::operator=(const matrix &m)
{
this->~matrix();
col = m.col;
row = m.row;
construct_matrix(row, col);
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
mat[i][j] = m.mat[i][j];
}
}
return *this;
}
matrix matrix::operator+(const matrix &m) const
{
matrix mat1(row,col);
for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
mat1.mat[i][j] += mat[i][j] + m.mat[i][j];
}
}
return mat1;
}
и # main
#include "pch.h"
#include <iostream>
using namespace std;
#include "matrix.h"
int main()
{
matrix a(2, 2), b(2, 2);
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
a.mat_pop(i, j, i);
b.mat_pop(i, j, j);
}
}
//matrix c = a + b;
matrix c(2, 2);
c = a + b ;
return 0;
}
проблема возникает, когда я использую оператор +, если я просто пишу
matrix c = a;
, он работает нормально.