![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 26.12.2012
Сообщений: 2
|
![]()
У меня имеется некая иерархия классов:
TAbstractClass | ...- TConcreteClassA ....| .... -TConcreteClassA1 ....| ... | ...- TConcreteClassB ....| .... -TConcreteClassB1 ....| ... | ... Я планирую хранить все экземпляры в списке как TAbstractClass. И для их создания пользоваться виртуальными конструкторами, причем у каждой ветви конкретного класса они будут отличаться (по аргументам, по их типам), а у каждой конкретной ветви иметь одинаковый набор. Как мне грамотно организовать процесс создания этих объектов извне? Грубо говоря, если бы все конструкторы имели одинаковый вид я мог бы писать, как пример: Код:
Последний раз редактировалось hpple; 26.12.2012 в 02:05. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Посмотрите примеры этих классов в delphi, их там великое множество.
TObject, TThread вот вам пример: Код:
А вот родившемуся от него TAbstractionGoesHere необходимо точно так же описать конструкторы(оставить только overload ибо конструктора у нас 2), и создать эти методы и описать их. Лучше к интерфейсам присмотритесь, там есть уже готовая реализация TInterfaceList у интерфецсов и абстрактных классов есть... ну они чем-то схожи. Последний раз редактировалось Человек_Борща; 26.12.2012 в 02:23. |
![]() |
![]() |
![]() |
#3 |
Новичок
Джуниор
Регистрация: 26.12.2012
Сообщений: 2
|
![]()
Суть вопроса была в другом: меня интересует, как написать универсальный код именно для создания конкретных экземпляров в каком-то месте сторонней программы, которая их будет использовать, при условии, что сделать, как я привел выше нельзя, в силу того, что у разных подклассов разный вид конструкторов.
Только с помощью разделения процесса создания на использование конструктора без параметров и последующей инициации только что созданного объекта этими дополнительными данными? |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]() Код:
программа — запись алгоритма на языке понятном транслятору
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как правильно использовать MySQL | EndoCrinolog | PHP | 6 | 24.08.2012 21:08 |
Виртуальные методы. Почему бы всегда не использовать их? | haruhi | Общие вопросы C/C++ | 7 | 26.11.2011 16:44 |
Как правильно использовать MonthCalendar | Shanuzina | Компоненты Delphi | 1 | 04.03.2010 11:58 |
как правильно использовать OR AND | mpdasa | Общие вопросы Delphi | 2 | 19.01.2010 17:30 |
Кто сможет разъяснить как и зачем использовать виртуальные функции в C++? | Dunhil | Помощь студентам | 5 | 20.12.2007 14:19 |