Я пишу класс шаблона, который принимает в качестве ввода указатель и сохраняет его. Указатель предназначен для указания на объект, выделенный другим классом, и передается этому содержащему классу.Деструктор - следует ли использовать удаление или удаление []?
Теперь я хочу создать деструктор для этого контейнера. Как мне освободить память, на которую указывает этот указатель? Я не знаю, априори, будь то массив или один элемент.
Я как бы новичок в C++, так что несите меня. Я всегда использовал C, а Java - мой OO-язык выбора, но между желанием изучить C++ и требованиями к скорости моего проекта я пошел с C++.
Было бы лучше изменить контейнер из шаблона в контейнер для абстрактного класса, который может реализовать свой собственный деструктор?
Ответ JonH правильный, поэтому, возможно, вам следует предложить шаблоны: один для массивов, а другой нет. Другой ответ заключается в том, чтобы избежать массивов и вместо этого ожидать одного экземпляра, который может быть или не быть надлежащей коллекцией, которая очищается после себя, например, вектор <>. –
@Steven Sudit: Думаю, вы должны ответить на этот комментарий. –
У вас могут возникнуть проблемы с потоками с этим подходом - вы не можете удалить что-то, что было выделено в другом потоке. – ChrisF