|
184 / 24 / 4
Регистрация: 18.01.2011
Сообщений: 359
|
|
Полиморфизм и шаблонный контейнер.20.12.2011, 10:57. Показов 2690. Ответов 19
Метки нет (Все метки)
Как вы знаете, template определяет класс или несколько классов, к которым приводятся ф-и или др. класы использующие template.
Обычно template используют для создания стеков или массивов объектов. Вопрос вот в чем. Есть у меня объект. и у него несколько наследников. как я могу, указав базовый класс, содержать в стеке с помощью template эти объекты наследники? Дело в том, что обычно наследники "урезаются" до параметров базового класса в template. Можно ли это обойти и как? За ранее спасибо!
0
|
|
| 20.12.2011, 10:57 | |
|
Ответы с готовыми решениями:
19
Шаблонный класс - контейнер С++ Ассоциативный контейнер и шаблонный класс
|
|
184 / 24 / 4
Регистрация: 18.01.2011
Сообщений: 359
|
|||||||||||
| 20.12.2011, 11:19 [ТС] | |||||||||||
|
слышали. У меня в классах есть ф-я
должна перегружаться в каждой мм...в каждом объекте наследнике. Примерно подобным образом должна работать на мой взгляд программа:
а у писксела должен выводить еще и цвет. но фишка в том, что когда я помещаю объект в template то все у меня превращается однозначтно в Point а значит цвет отбрасывается. Как мне хранить разные объекты потомки????
0
|
|||||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 20.12.2011, 11:34 | |
|
Андрей2011, Указатели хранить как бэ.
Или сцылки
2
|
|
|
184 / 24 / 4
Регистрация: 18.01.2011
Сообщений: 359
|
|||||||||||||||||
| 20.12.2011, 12:01 [ТС] | |||||||||||||||||
а вот ф-я добавления объекта:
В чем принципиальная ошибка? а вот сам класс:
0
|
|||||||||||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
|||||||||||
| 20.12.2011, 12:43 | |||||||||||
|
А это что такое? Следи за мыслью:
Дальше:
(относительно начала массива) и по смещению KolObject (тоже относительно начала массива) То есть по окончании этих инструкций у тебя в массиве MyObject лежат 2 объекта Object; оно так задумано или это ошибка?
1
|
|||||||||||
|
184 / 24 / 4
Регистрация: 18.01.2011
Сообщений: 359
|
||||||||||||||||||||||||||
| 20.12.2011, 12:59 [ТС] | ||||||||||||||||||||||||||
|
Да путано получилось. Написал мини прогу в которой отражается моя проблема. Надеюсь на ваше терпение, уважаемые коллеги. Итак:
h файл: //т.е. создается класс
ну и добавлю для полного понимания что выводит.
в классе Point (класс родитель) объявлена как:
0
|
||||||||||||||||||||||||||
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||||
| 20.12.2011, 13:17 | ||||||
Point, не ошибка? NewStack<Point> NewStackPixel(Pi);
0
|
||||||
|
184 / 24 / 4
Регистрация: 18.01.2011
Сообщений: 359
|
|
| 20.12.2011, 13:20 [ТС] | |
|
ну Point - родитель. pixel - наследник. я вот и хочу добиться того чтоб под родительским классом можно было хранить ссылки или указатели на наследников. Но чтоб был пиксел! ато у меня все превращается в поинт. Такая штука.
0
|
|
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
|
||||||
| 20.12.2011, 13:23 | ||||||
|
А так если написать?
наследника до родителя
1
|
||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 20.12.2011, 13:28 | ||||||
|
Андрей2011, Пример тебе.
2
|
||||||
|
184 / 24 / 4
Регистрация: 18.01.2011
Сообщений: 359
|
|
| 20.12.2011, 14:12 [ТС] | |
|
Уважаемый, kravam, если написать NewStack<Pixel> NewStackPixel(Pi); - то все работает как надо, но мне нада чтоб писать NewStack<Point> NewStackPixel(Pi); - иначе бы я тут не сидел.
Уважаемый, ForEveR, решил фактически за меня всю задачу. Несколько необычным способом но тем не менее. Вобщем всем спасибо. Буду осознавать последний код.
0
|
|
|
|
||||||
| 20.12.2011, 16:51 | ||||||
|
В хронологической последовательности было два раза отмечено:
0
|
||||||
|
184 / 24 / 4
Регистрация: 18.01.2011
Сообщений: 359
|
|
| 21.12.2011, 10:29 [ТС] | |
|
Ну тут товарищ вектор использовал ибо! а по другому фиг знает как оно работает. Щас буду разбираться. Если посетит прозрение - выложу достойный вариант решения.
0
|
|
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
|
||||||
| 08.12.2020, 13:59 | ||||||
|
в свете новых тенденций - с unique_ptr и Variadic Template с std::forward
P.S. хотя unique_ptr обёртку всё-таки можно создавать и в наследниках?.. - не знаю, где лучше?.. может, оставить это дело для класса контейнера и норм. ...
0
|
||||||
|
Комп_Оратор)
|
||||||||||||
| 08.12.2020, 14:39 | ||||||||||||
|
JeyCi, этой теме уже почти 10 лет. Но в принципе, учитывая её посещаемость может и нужно бы написать. Но.
Отрадно видеть что человек писавший в теме Когда выделять память Когда выделять память что память выделять не нужно. И отвечавший озадаченным людям:
0
|
||||||||||||
|
263 / 152 / 33
Регистрация: 29.06.2019
Сообщений: 1,538
|
|||||||
| 09.12.2020, 08:21 | |||||||
|
P.S. простейший container template
- вместо int помещайте в него указатели на базовый класс - всё по логике выше
0
|
|||||||
|
Комп_Оратор)
|
||||||
| 09.12.2020, 11:46 | ||||||
|
Андрей2011 и другие участники, эта тема проведена такими корифеями как ForEveR и fasked, что мне в их компании сложно выглядеть прилично. Я не достаточно силён для этого. Но время принесло новые стандарты и я всё же добавлю вот что. Если вам придётся создавать класс с объектами единоличного владения, то пользуйтесь перемещающей семантикой для копирования и копирующей инициализации
Вообще, копировать такой объект, это плохо по самому замыслу. Но если придётся, то это можно так сделать:
0
|
||||||
| 09.12.2020, 11:46 | |
|
Помогаю со студенческими работами здесь
20
Создать шаблонный класс-контейнер Array, который представляет собой массив
Заменить контейнер vector, использовавшийся для хранения текстовых строк (листинг 2.3), на контейнер list Шаблонный массив Шаблонный класс Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
|
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
|
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
|
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора
Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если. . .
|
|
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
|
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2.
Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
|
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
|
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
|