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

Аналог realloc, знающий классы и вызывающий конструкторы/деструкторы - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ одномерный массив http://www.cyberforum.ru/cpp-beginners/thread447680.html
Удалить все четные элементы
C++ Количество спиралей Решение задачи мне не нужно, требуется только логическое разъяснение хода действий. Спираль — это ломаная не нулевой длинны без самопересечений, вершины которой размещены в точках с целыми координатами на плоскости. Каждое последующее звено ломаной, должно быть повёрнуто на 90 градусов относительно предыдущей по часовой стрелке. Рассмотрим прямоугольник размерами n на m. Для каждой спирали, её... http://www.cyberforum.ru/cpp-beginners/thread447658.html
C++ Считывание памяти
Чтото не понятное в голову пришло, вот хотелось бы узнать мнение експертов. Допустим у нас есть игра, в игрей карта, с отображением юнитов и тому подобное.. Можно ли какмто образом программно считать все даенные с игры кастательно перемешения юнитов нахождения построек. Насколько это сложно, и вообше возможно ли? Что для этого нужно знать, какие методы использовать, эксперты подскажите:)
Написать программу, которая выводит минимальный элемент введенного с клавиатуры массива целых чисел C++
вот есть задача.... Написать профамму, которая выводит минимальный элемент введенного с клавиатуры массива целых чисел. Ниже приведен рекомендуемый вид экрана во время работы профаммы (данные, введенные пользователем, выделены полужирным шрифтом). вот её решение..... #include <stdio.h> #include <conio.h>
C++ Переставить буквы в слове http://www.cyberforum.ru/cpp-beginners/thread447645.html
Здравствуйте, прошу помочь с программой: C клавиатуры вводится слово с четным кол-вом букв, нужно поделить его пополам и поменять части этого слова местами. Пример: CyberForum -> ForumCyber Вывод данных представить в TList
C++ Массив Помогите пожалуйста написать функцию: Подсчитать количество элементов с четными значениями. Массив задан размером n=10; подробнее

Показать сообщение отдельно
FinancialShark
2 / 2 / 0
Регистрация: 24.01.2014
Сообщений: 42
27.02.2014, 01:18     Аналог realloc, знающий классы и вызывающий конструкторы/деструкторы
Цитата Сообщение от taras atavin Посмотреть сообщение
Можно ли сделать такой шаблон?

class A
{
};
class B
{
};
A *a;
B *b;
a=MyReAlloc(a, 1024); // Размер куска памяти по указателю a становится равным 1024-м объектам (а не байтам), для каждого создаваемого объекта вызывается A::A(), а при сокращении размера для каждого удаляемого объекта вызывается A::~A()
b=MyReAlloc(b, 512); // Размер куска памяти по указателю b становится равным 512-ти объектам (а не байтам), для каждого создаваемого объекта вызывается B::B(), а при сокращении размера для каждого удаляемого объекта вызывается B::~B()
Как это сделать?
очень просто!!!

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
template<typename TYPE> void MyRealloc(void* Memory, int size)
{
int oldsize = _msize(Memory)/sizeof(TYPE);
if (size == oldsize) return;
if (size > oldsize)
{
Memory = (TYPE*)realloc(Memory, sizeof(TYPE)*size); // увеличит память
for (int i = 0; i < size-oldsize; i++)
    {
    new (oldsize+i) TYPE; // вызовет конструктор
    }
}
else
{
for (int i = oldsize-1; i >= size; i--)
    {
     delete (((TYPE*)(Memory))+i); // вызовет деструктор
    }
Memory = (TYPE*)realloc(Memory, sizeof(TYPE)*size); уменьшит память
}
/*вызов функции*/
MyRealloc<A>(a, 1024);
MyRealloc<B>(b, 512);
А вообще это извращение. для таких целей пишется отдельно класс.
 
Текущее время: 00:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru