Форум программистов, компьютерный форум CyberForum.ru

Отменить автоматический вызов деструктора - C++

Восстановить пароль Регистрация
 
iving
0 / 0 / 0
Регистрация: 12.12.2012
Сообщений: 13
12.12.2012, 23:30     Отменить автоматический вызов деструктора #1
Есть такой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
template <typename type>
class list
{
public:
    list() { arr=NULL; size=0; }
    list(int i) { arr=new type[i]; size=i; }
    ~list() { delete [] arr; arr=NULL; }
    void incSize(int inc)
    {
        type* tarr=new type[size+inc];
        memcpy(tarr,arr,sizeof(type)*size);
        delete [] arr;
        arr=tarr;
    }
protected:
    type* arr;
    int size;
};
Если я потом пишу:
list<int> a(10);
a.incSize();
То все работает нормально. (Функция incSize дана для примера, как использующая memcpy).
Однако если я захочу использовать эту функцию с переменной list<list<int>>, то начинаются проблемы, так как при уничтожении arr вызывается деструктор и для всех его элементов.
Как решить эту проблему?
желательно не переопределяя operator[] и не используя vector.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2012, 23:30     Отменить автоматический вызов деструктора
Посмотрите здесь:

Вызов деструктора C++
C++ Явный вызов деструктора
C++ Не понятный вызов деструктора
C++ Вызов деструктора
C++ Повторный вызов деструктора
C++ Явный вызов деструктора
Вызов деструктора C++
C++ Автоматический вызов деструктора компилятором

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 06:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru