Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как явно вызвать конструктор и деструктор? 
:(
    Опции темы
TarasProger
Дата 16.8.2015, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 5.8.2015

Репутация: нет
Всего: нет



Есть классы. Пусть их зовут A и B. Фрагмент конструктора B:
Код
Data=(A*)calloc(n, size(A));
if (Data!=nullptr)
{
 for (p=Data+n-1; p>=a; --p)
 {
  //Как в этом месте вызвать контукртор с параметрмо будущего объекта *p?
 }
 Count=n;
}
else
{
 Count=0;
}
. Фрагмент дейстурктора B:
Код
if (Data!=nullptr)
{
 for (p=Data+n-1; p>=Data; --p)
 {
  //Как в этом месте вызваать деструктор объекта *p?
 }
 free(p);
}
.

Это сообщение отредактировал(а) TarasProger - 16.8.2015, 19:45
PM MAIL   Вверх
feodorv
Дата 16.8.2015, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 11
Всего: 45



То есть ссылки, которые Вам кидают, Вы даже не открываете. Ответ здесь.

Это сообщение отредактировал(а) feodorv - 16.8.2015, 19:56


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
TarasProger
Дата 17.8.2015, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 104
Регистрация: 5.8.2015

Репутация: нет
Всего: нет



Цитата(feodorv @  16.8.2015,  19:55 Найти цитируемый пост)
То есть ссылки, которые Вам кидают, Вы даже не открываете. Ответ здесь.
Это я читал несколько лет назад, потом перечитал непосредствено перед размещением этого: http://forum.vingrad.ru/index.php?showtopi...t&p=2644408 поста и ещё раз непосредственно перед созданием этой темы. Да вот беда: так даже не помпилируется. И ругается именно на вызов констурктора.

Добавлено @ 08:47
Код
#include <stdlib.h>
class A
{
 public:
  int a;
  double b;
  A (int x);
};
A::A (int x)
{
 a=x;
}
int main ()
{
 A *d;
 A *p;
 d=(A*)calloc(20, sizeof(A));
 for (p=d+19; p>=d; --p)
 {
  new (p)A(10);
 }
 for (p=d+19; p>=d; --p)
 {
  p->~A();
 }
 free(d);
 return 0;
}
 
Цитата
C:\Projects\Test6\Test6\Test6.cpp|21|error: no matching function for call to 'operator new(sizetype, A*&)'|


Это сообщение отредактировал(а) TarasProger - 17.8.2015, 10:44
PM MAIL   Вверх
feodorv
Дата 17.8.2015, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 11
Всего: 45



Цитата(TarasProger @  17.8.2015,  08:40 Найти цитируемый пост)
так даже не помпилируется.

Цитата

#include <new> // Необходим для использования placement new



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0537 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.