![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
omickron |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 12.2.2009 Репутация: нет Всего: 1 |
Имеем:
Вопрос: как в переменную засунуть объект такого же класса, что и имеющийся объект? |
|||
|
||||
AKATAN |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 100 Регистрация: 30.9.2008 Где: Украина Репутация: 1 Всего: 1 |
или обращаться к TMyClass нельзя? Это сообщение отредактировал(а) AKATAN - 20.7.2011, 21:43 |
|||
|
||||
pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 10 Всего: 40 |
-------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
skyboy |
|
||||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
лучше - воспользоваться паттерном "Прототип". тогда будет типа такого:
можно - воспользоваться RTTI и написать что-то навроде:
но, кажется, только для определенных классов будет работать(в плане иерархии у "подходящих" классов должен быть предком TPersistentClass, кажется) |
||||
|
|||||
omickron |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 12.2.2009 Репутация: нет Всего: 1 |
AKATAN, блин
![]() ![]() pseud, а теперь представьте, что у вас пара десятков наследников TMyClass. Представили? Как будет выглядеть Ваш код? skyboy, а прототипы разве реализуются в Delphi? Интересует 2007 версия. Насчёт GetClass - если не ошибаюсь, она вернёт то же значение, что и source.ClassType. А это не срабатывает, как я писал в первом посте. |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
конструктор лучше бы сделать виртуальным -------------------- Обижено школьников: 8 |
|||
|
||||
omickron |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 97 Регистрация: 12.2.2009 Репутация: нет Всего: 1 |
Спасибо! TMyMetaclass(my.ClassType).Create - то, что надо!
Насчёт виртуального конструктора - вроде он должен обязательно быть для динамического определения типа создаваемого объекта. Но почему-то в приведённом Вами коде ShowMessage(new.ClassName); показывает "MyClass1". MyClass - просто наследник Tobject, а у него конструктор не виртуальный, обычный. Блин, почему? ![]() |
|||
|
||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
потому что my.ClassType равен TMyClass1. Приведение к TMyMetaclass нужно только чтобы выражение удовлетворяло правилам совместимости типов.
А вот тело конструктора выполняется от TMyClass. Сделай такой эксперимент, и увидишь:
Такой объект я назвал бы калекой. Если сделать конструктор виртуальным - проблема исчезает -------------------- Обижено школьников: 8 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |