Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: инициализация shared_array  (Прочитано 6402 раз)
0 Пользователей и 1 Гость смотрят эту тему.
bebabo
Помогающий

ru
Offline Offline

WWW
« : 25-05-2007 13:22 » 

осваиваю boost, в частности shared_array, и никак не могу понять, как проделать следующее:
если tex - объявленный глобально shared_array, как далее заполнить его?
т.е. не получается сделать то, что с обычными указателями выглядело бы вот так:

Same* tex[];

и где-нибудь дальше

tex[0] = new Same(10, 10);
tex[1] = new Same(20, 22);

и т.д.
Записан

Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #1 : 28-05-2007 06:00 » 

Дело в том, что с у тебя это не получится даже с обчными массивами Улыбаюсь

Same* tex[];// и откуда компилятору взять размер? орать будет прямо тут

Далее зачем ты хочешь получить shared_array указателей на Same?
у тебя при уничтожении shared_array поудаются только указатели, а память с элементами Same останется
если есть не приодалимое желанье засунуть в shared_array массив указателей то вероятно лучше сделать так

boost::shared_array<boost::scoped_ptr<Same> > tex;
tex.reset(new boost::scoped_ptr<Same>[10]);
tex[0].reset(new Same(10,10));
tex[1].reset(new Same(20,22));

тогда при уничтожении tex у тебя начнут разрушаться scoped_ptr которые в свою очередь разрушат Same.
Записан

Странно всё это....
bebabo
Помогающий

ru
Offline Offline

WWW
« Ответ #2 : 31-05-2007 07:46 » 

LogRus, спасибо! про сам Same* tex[] - это я впопыхах забыл размер, а что касается shared_array - еще раз спасибо! я не догадался что нужно сделать вот это - tex.reset(new boost::scoped_ptr<Same>[10]); - пытался его размерность при объявлении указать.
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines