|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
18.07.2015, 22:47 | #21 | |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,774
|
Правильный ответ на эту реплику: "Флудерам слова не давали". Хотел было сразу написать, но сдержался. Как показала практика, зря.
Цитата:
Другой способ организации фабрики класса -- объявление виртуального конструктора (который и есть фабрика класса по сути) и описание массива классов: Код:
|
|
18.07.2015, 23:59 | #22 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Код:
Жаль, что не в тему - я полез в обобщённые типы, чтобы научиться с ними работать. До этого меня и старые варианты (с приведением типов) устраивали. При использовании твоего кода тоже понадобится приведение типа результата к типу переменной, в которую функция отдаёт значение. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
19.07.2015, 00:19 | #23 | |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,774
|
Цитата:
Код:
|
|
19.07.2015, 00:24 | #24 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
похоже, то, что надо.
в понедельник приду на работу - попробую. спасиба. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
20.07.2015, 07:30 | #25 | |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Цитата:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
|
21.07.2015, 10:35 | #26 | |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Цитата:
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
|
21.07.2015, 12:37 | #27 | |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,774
|
Цитата:
А вообще, я все выходные думал над этим кодом и не понял смысла обобщаемой операции. В обобщенном программировании это известная проблема курицы и яйца. Поскольку в Delphi нет вывода типов, передача имени типа при раскрытии обобщения не избавляет от описания переменной с явным указанием типа, что сводит на нет все преимущества обобщения. А если тип переменной задается явно, зачем вообще городить обобщения, не проще ли описать простое создание экземпляра конкретного типа? По коду даже короче будет. Код:
И наконец, с точки зрения компиляции, если бы этот код комплировался, он бы раскрывал обобщение в каждой точке вызова, фактически вставляя тело функции в каждом месте вызова. Догадываюсь, что на размер сейчас никто не смотрит, но при полном отсутствии выигрыша от обобщения это просто раздувание кода. Предполагал, что Delphi не умеет группировать сходные раскрытия обобщений для экономии кода, а оказалось, что этот код он вообще не компилирует. |
|
21.07.2015, 12:45 | #28 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
Цитата:
В вашем коде Result компилятор пытаться привести к некому классу T которого не существует в природе, потому что на тот момент <T> уже стало TMyClass Правильно: Код:
Есть абстрактные классы, а вот абстрактных результатов у функции быть не может. Delphi типизирован, это вам не JavaScript где return это и int, string, bool, float, double и object одновременно. Абстрактный класс просто упрощает некоторую реализацию класса операций над неким типом данных, на пример раньше приходилось самому писать TMyIntegerList, теперь это делает delphi за нас в виде TList<Integer>. Последний раз редактировалось Человек_Борща; 21.07.2015 в 12:56. |
|
21.07.2015, 12:46 | #29 |
Цифровой кот
Старожил
Регистрация: 29.08.2014
Сообщений: 7,629
|
Короче, я думаю забить на этот подход болт, так как действительно во многих частных случаях он не имеет симсыла. Заюзать я его хотел только с целью выкинуть приведение типов и неизменность кода конструктора при добавлении новых потомков TXmlOption.
Вобщем, дануегонах, других задач - мешок. Столько времени просрал, жалко. Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
|
21.07.2015, 13:03 | #30 |
Форумчанин
Регистрация: 30.06.2015
Сообщений: 353
|
Хочу поковыряться в сабже. Какая у вас версия Делфи (или кого там)? А то моя не поддерживает эту фичу.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как сделать из числа типа real число типа integer? | gylayko | Помощь студентам | 6 | 15.09.2012 11:41 |
Возможно ли в массив типа char записать первым элементом значение переменной типа float? | Green Gin | Общие вопросы C/C++ | 2 | 05.12.2011 01:50 |
Каким образом сохранить цвет. Типа в переменную типа TColor ? | serres | C++ Builder | 5 | 07.12.2010 16:19 |
С++ (конструктор, деструктор, копирующий конструктор) | Jane-sad | Помощь студентам | 2 | 01.10.2010 10:01 |
Запись числа типа инт в ячейку двумерного массива типа char | AxenicX | Помощь студентам | 1 | 25.09.2009 00:35 |