Проблема возникает именно в том момент когда вызывается десктруктор, если доверит создание деструктора "автоматике", то ни чего не меняется и все равно выпадает такая ошибка. Собственно у меня возникает два вопроса:
Test.cpp
A.h
A.cpp
Заранее спасибо за помощь.
У вас классическая ошибка: нет копирующего конструктора, он генерируется компилятором, и просто копирует почленно - в том числе a.
В итоге:
A test3 = test1 + test2;
Создается временный объект с выделением памяти. Далее этот временный объект передается конструктору test3, и указатель на выделенную временному объекту память просто копируется. Затем временный объект уничтожается, память освобождается. Затем, когда уничтожается test3, эта же память освобождается второй раз.
Учтите, в программировании действует презумпция корректности компилятора. Пояснение "а, проблема в компиляторе" выдает новичка с головой. Опытный программист будет до последнего искать ошибку у себя...
Правильное решение -
A(const A& nw):n(10),a(new int[n]) {
for(int i = 0; i < n; ++i) a[i] = nw.a[i];
}
Полуправильное :) -
A test3;
test3 = test1 + test 2;
И еще - не стесняйтесь ставить const - например, аргумент оператора присваивания вы же не меняете - делайте его константным. Функция вывода объект не меняет? делайте ее константной...
P.S. И еще - не нужно задавать вопрос с картинкой, из которой достаточно одной строки, зато лучше давайте код прямо в вопросе... Будь настроение не таким благодушным - не полез бы открывать еще три окна, чтоб на ваш код посмотреть... Зацепило только ваше "компилятор виноват" - ну не верю, чтоб он был виноват в такой ерунде :) - нарваться на ошибку компилятора в таком месте - все равно что подорваться на какой-нибудь мине времен Наполеона на Красной площади :)
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости