Создаем динамический массив:
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];
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пишу небольшой движок на C++ с SDL2 и графикой OpenGLПисал код, всё было нормально, но вчера вдруг начала появляться такая вот ошибка
Есть такая функция, которая ищет файлы в выбранном каталоге и его подкаталогах, а потом записывает пути к файлам в datatxt