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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> помогите спроектировать класс 
V
    Опции темы
CTapMex
Дата 5.10.2009, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Приветсвую.
Ситуация такая.
есть три класса: СHeap - работа с кучей; CItems - лист элементов, память выделяется через CHeap; и некий головной класс CHead, он оперирует с CItems. 
Нужно, чтобы хэндл кучи был статическим внутри класса CHead
PM MAIL   Вверх
Alexeis
Дата 5.10.2009, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(CTapMex @  5.10.2009,  12:26 Найти цитируемый пост)
Нужно, чтобы хэндл кучи был статическим внутри класса CHead 

  Ну и? Делаешь статическое поле в класса CHead. В чем состоит вопрос?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
bsa
Дата 5.10.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



CTapMex, возможно, тебе будет интересен паттерн Singleton.
PM   Вверх
CTapMex
Дата 5.10.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Alexeis @ 5.10.2009,  15:43)
Цитата(CTapMex @  5.10.2009,  12:26 Найти цитируемый пост)
Нужно, чтобы хэндл кучи был статическим внутри класса CHead 

  Ну и? Делаешь статическое поле в класса CHead. В чем состоит вопрос?

наверное я не совсем корректно сформулировал или
я плохо знаю мат часть

нужно чтобы эта переменная была своя для каждого CHead , но в тоже время была доступна и другим классам используемым в нем


хотя я наверное реально туплю. надо в классе CHeap  определить метод для возврата хэндла и вызывать его , когда он нужен.
Или этот вариант тоже нето?
PM MAIL   Вверх
Alexeis
Дата 5.10.2009, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

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



Цитата(CTapMex @  5.10.2009,  14:18 Найти цитируемый пост)
хотя я наверное реально туплю. надо в классе CHeap  определить метод для возврата хэндла и вызывать его , когда он нужен.
Или этот вариант тоже нето? 

  Хочется понять ситуацию. У каждого CHead есть свой Heap? Или же Heap общий для всех объектов типа CHead. Если же Heap общий, то CHead не должен заниматься раздачей чужих хэндлов.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
CTapMex
Дата 5.10.2009, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



объясню подробнее, глядишь и сам пойму. в диалогах таких на форуме (даже с самим собой) часто нахожу решение

пытаюсь переписать чужой код, вот и встал

исходные данные. 

есть статическая переменная хэндл кучи
есть набор функций (не класс), небольшой, для работы с кучей

есть класс CItems, он выделяет память через  эти функции работы с кучей.
есть класс CHead, он для себя выделяет память через функции для кучи, плюс использует класс CItems.
хэндл кучи общий для всех экземпляров классов

я же, хочу сделать так , чтобы каждому CHead соответствовал свой хэндл кучи, соответсвенно все классы , которые он вызывает должны использовать этот же хэндл.
PM MAIL   Вверх
jonie
Дата 5.10.2009, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Цитата


есть статическая переменная хэндл кучи
есть набор функций (не класс), небольшой, для работы с кучей

в каждую функцию должен как я понимаю передаваться хендл кучи, тогда:
Цитата
есть класс CHead, он для себя выделяет память через функции для кучи, плюс использует класс CItems.
хэндл кучи общий для всех экземпляров классов

делайте чтобы этот хендл хранился в CHead и передавался в конструктор CItems как параметр, например.

Сам класс CHead может быть шаблонным, и требовать указания как раз методов на allocate\deallocate как параметров шаблона...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
CTapMex
Дата 6.10.2009, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



спасибо
PM MAIL   Вверх
CTapMex
Дата 6.10.2009, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



остановился на следующем варианте
функции для работы с кучей, плюс хендл кучи объединяем в один класс CHeap
CHead создает себе экземпляр CHeap  и передает его в CItems как параметр при создании
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.0536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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