@chelo_vek

Почему деструктор крашится на чистке и-ого элемента?

Создать класс для работы с матрицами, память притоп вводить динамически

void massiv::sum(massiv obj1, massiv obj2)
{
cout << "Summary of matrixes: ";
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
mas[i][j] = obj1.mas[i][j] + obj2.mas[i][j];
}
}
return;
}

void massiv::multiply(massiv obj1, massiv obj2)
{
cout << "Multiplied matrix: ";
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
mas[i][j] = 0;
for (int k = 0; k < size; k++)
mas[i][j] += obj1.mas[
Скриншот ошибки:
5d72b5b01f610353132067.jpeg
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
У тебя в классе massiv нет конструктора копирования, а аргументы методам sum и multiply ты передаёшь по значению. Это значит, что при создании копий объектов класса massiv память не выделяется, но при их уничтожении она освобождается. А потом освобождается повторно при удалении оригинальных объектов. Поэтому не работает.
Самый простой фикс -- поменять

void massiv::sum(massiv obj1, massiv obj2)
void massiv::multiply(massiv obj1, massiv obj2)

на

void massiv::sum(const massiv& obj1, const massiv& obj2)
void massiv::multiply(const massiv& obj1, const massiv& obj2)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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