Создаем динамический массив:
Array *arr = new Array[2];
После добавим в него два элемента:
Array* arr0 = new Array();
Array* arr1 = new Array();
arr[0] = *arr0;
arr[1] = *arr1;
В деструкторе класса Array
я хочу сделать сначала итерацию по всем элементам массива и для каждого отдельно вызвать delete
, так как все они были созданы с помощью оператора new
, а только после этого вызвать delete[] arr
.
Но такая конструкция не работает:
for(int i = 0; i < size; i++)
{
delete *arr[i];
}
Ошибка: отсутствует оператор *, соответствующий этим операндам.
Вопрос: Как реализовать удаления указателей из динамического массива?
Здесь
arr[0] = *arr0;
arr[1] = *arr1;
вы скопировали (присвоением) объекты. При удалении массива для этих копий деструкторы будут вызваны автоматически. А чтоб удалить исходные объекты -
delete arr0;
delete arr1;
к вашим услугам...
Вот если бы вы делали
Array ** arr = new Array*[2];
Array* arr0 = new Array();
Array* arr1 = new Array();
arr[0] = arr0;
arr[1] = arr1;
тогда дело другое, тогда перед удалением массива надо было бы выполнить
delete a[0];
delete a[1];
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Пишу небольшой движок на C++ с SDL2 и графикой OpenGLПисал код, всё было нормально, но вчера вдруг начала появляться такая вот ошибка
Есть такая функция, которая ищет файлы в выбранном каталоге и его подкаталогах, а потом записывает пути к файлам в datatxt