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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Скопировать первую матрицу во вторую http://www.cyberforum.ru/cpp-beginners/thread729740.html
Здравствуйте,помогите с написанием кода. Задача в том что,создаем первый двумерный массив из введеных значений M и K,заполняем некоторыми значениями,выводим.Аналогично построить и вывести двумерный массив из M1 и К1.Копируем первую матрицу во вторую с учением либо дополняя нулями.
C++ Вывод текста #include <iostream> #include <conio.h> using namespace std; void main() { setlocale(LC_ALL, "rus"); char a; char b; http://www.cyberforum.ru/cpp-beginners/thread729734.html
Из массива X(N) все положительные элементы записать в массив Y(K), а все отрицательные элементы - в массив Z(m) C++
Из массива X(N) все положительные элементы записать в массив Y(K), а все отрицательные элементы - в массив Z(m).Найти в каждом массиве максимальный по модулю элемент.Удалить в каждом массиве первый элемент. В программе написать функцию формирования массивов Y и Z, определения максимального по модулю элемента,удаление элемента.Что делать,помогите дописать #include "stdafx" #include <iostream> ...
нахождение делителей числа C++
Даны натуральные числа n, m. Получить наименьшее общее кратное (НОК) чисел n, m. НОК(n, m) = n*m / НОД(n, m).
C++ цикл с условием (вычислить условную функцию в точках) http://www.cyberforum.ru/cpp-beginners/thread729727.html
вычислить условную функцию в точках хi ε , хi = х0 + iΔх, i = 0,1,… Вывод результатов обеспечить в виде таблиц с указанием номера ветви, для которой он получен.
C++ Русский шрифт в консоли Как подключить русский шрифт в консоли? подробнее

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

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.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru