![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| relate |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.12.2009 Репутация: нет Всего: нет |
Проблемма:
есть динамический массив классов, в него внесены потомки базавого класса. При попытке создать экземпляр класса из массива вызывается конструктор базового класса, а не потомка, что внесен в массив ((( Code simple:
Можно сделать self.fConvertWay := THpFF_ConvertWay_CoordGMS.create; Но как поступить с функцией THpCustomfF_Data.convertWaySet4it ??? Мне удобно ее пользовать d_f.convertWaySet4it(d_f.convertWayAvailable[1]); А имя класса, что храниться в массиве брать, как class funtion NameStr: string; Да и список доступных способов преобразования fConvertWayAvailable каждый наследник THpCustomfF_Data создает свой... Помогите pls self.fConvertWayAvailable[0] := THpFF_ConvertWay_CoordGMS; self.fConvertWay := self.fConvertWayAvailable[0].Create; <= Как вызвать конструктор класса THpFF_ConvertWay_CoordGMS ? |
||||
|
|||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Так конструктор ведь не виртуальный. Сделайте виртуальным.
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| relate |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.12.2009 Репутация: нет Всего: нет |
Хм, конструктор базового класса?
Не помогло Убрал virtual В потомке?
Спасибо за совет, но... Не помогло... вызывается конструктор THpCustomfF_ConvertWay... и все. Вопрос остается открытым help please |
||||
|
|||||
| relate |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.12.2009 Репутация: нет Всего: нет |
По сути virtual, если не изменяет память меняет расположение метода в VMT использование virtual оправданно если метод используется часто....
|
|||
|
||||
| relate |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.12.2009 Репутация: нет Всего: нет |
О! все это натолкнуло на мысль сделать метод Create в базовом классе абстрактным:
в классе потомке реализовываем его:
и в конструкторе небольшие изменения:
и о чудо! работает ))))))))))) Ура, заработало! |
||||||
|
|||||||
| relate |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.12.2009 Репутация: нет Всего: нет |
CodeMonkey
Спасибо за направление поиска! Может вы, говоря
разбежались в терминогологии Thanks 4 you!!! Реутинг не повышается -у меня менее 100 постов Это сообщение отредактировал(а) relate - 20.2.2010, 04:58 |
|||
|
||||
| relate |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.12.2009 Репутация: нет Всего: нет |
Еще один вариант решения проблеммы.
Подсказал Gelios -админ дру сайта:
|
||||
|
|||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |