![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Возможно ли наследовать STL классы
хотелась бы следующая конструкция: template <typename T> class cSTLQueue: public std::queue { public: ... protected: .... private: .... }; А вообще-то мне надо queue, но с фиксным колвом элементов и чтоб память выделялась сразу на конкретное число элементов. Хочу применить resize к queue, но надо как-то добраться до protected. Выходит нужно использовать наслкдование, но возможно ли такое? |
|||
|
||||
| Hroft |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 20.10.2003 Где: Москва Репутация: нет Всего: 3 |
А что, так разве не работает?
А resize в нем нету.... |
|||
|
||||
| a-petrosian |
|
|||
|
Unregistered |
В общем наследование STL контейнеров не самый лучший вариант.
Если ты не находишь другого выхода из сложивщейся ситуации, то проблема может быть гараздо глубже, а именно в проектных решениях. Подумай, что значит "очередь с фиксированным количестеом элементов"? ? ? Очередь - это структура данных в которую элементы добавляются и удаляются последователно ! Может быть тебе нужен vector<> или может нужно создать класс инкапсулирующий работу с queue<>. |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
to a-petrosian
я не правильно выразился, не количество элементов, а количество ячеек элементов т.е. память под очередь должна выделяться при инициализации, а заполнение элементами по ходу программы Hroft я тож типа того пытался сделать, но ругается (MVC6++), типа посылает на доку к компилятору |
|||
|
||||
| Hroft |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 20.10.2003 Где: Москва Репутация: нет Всего: 3 |
Интересно, я тоже под VCPP6.0 это компилировал.
Но можно так сделать: у вектора vector<> есть функция reserve, которая выделяет память, но при этом push_back будет работать, как будто она не выделялась. То есть не будет выделяться память под каждый элемент отдельно (или же под группу элементов, так как на самом деле оно не по одному выделяется, а штук по 10 по умолчанию, вроде бы). |
|||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Hroft
спасибо! я уже пошел по другому пути а может проблема в typename? у тебя используется class Хотя это вроде бы тоже самое, но мне кажется есть какие-то отличия между typename & class жаль времени нет толком разобраться Это сообщение отредактировал(а) bel_nikita - 8.1.2004, 15:30 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |