Проблема возникает именно в том момент когда вызывается десктруктор, если доверит создание деструктора "автоматике", то ни чего не меняется и все равно выпадает такая ошибка. Собственно у меня возникает два вопроса:
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. И еще - не нужно задавать вопрос с картинкой, из которой достаточно одной строки, зато лучше давайте код прямо в вопросе... Будь настроение не таким благодушным - не полез бы открывать еще три окна, чтоб на ваш код посмотреть... Зацепило только ваше "компилятор виноват" - ну не верю, чтоб он был виноват в такой ерунде :) - нарваться на ошибку компилятора в таком месте - все равно что подорваться на какой-нибудь мине времен Наполеона на Красной площади :)
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Стало интересно, как оформить алгоритм сортировки подсчетом из Кормена по стандартам C++ для сортировки произвольных объектов, а не только...
Видимо вся проблема в том, что размер массива я также читаю из файла (тобиш он динамический), и когда я пытаюсь считать строку через getline компилятор...
Пишу клиент/серверное приложение, клиент вводит имя файла, сервер ищет етот файл у себя и передает его клиентуНе могу найти никакого способа...
Доброго дняОпыта работы с студией не так много и каждый новый проект сталкиваюсь с новыми приключениями