|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.12.2012, 16:30 | #1 |
Пользователь
Регистрация: 05.12.2012
Сообщений: 67
|
Создание экземпляра класса по имени
Доброго времени суток.
Имеется шаблонный класс. Он является наследником базового абстрактного класса, в котором определены нужные методы. Код:
Задачка следующего характера: перейти с указателей на базовый на экземпляры базового класса. Подскажите, возможно ли это? Последний раз редактировалось Stilet; 11.12.2012 в 16:38. |
11.12.2012, 17:00 | #2 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Можно конструкцию, в которой сейчас используется E<T>, а хочется что-то другое?
|
11.12.2012, 17:22 | #3 |
Пользователь
Регистрация: 05.12.2012
Сообщений: 67
|
Код:
|
11.12.2012, 17:33 | #4 | |
С++
Форумчанин
Регистрация: 22.09.2008
Сообщений: 791
|
Цитата:
Форматируйте код, будьте людьми.
|
|
11.12.2012, 17:51 | #5 |
Пользователь
Регистрация: 05.12.2012
Сообщений: 67
|
Я удаляю объекты one и two, ибо потоки заканчиваются.
|
11.12.2012, 21:43 | #6 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
У тебя ошибка архитектуры: нарушение прав владения объектами. Ты создаешь экземпляры наследников. И скармливаешь их некоторому менеджеру - экземпляру класса B. Но он не владеет самими объектами. Соответственно, при уничтожении этих объектов, менеджер ломается. Лекарство: 1. Костыль: перед уничтожением объекта наследника, предупреждай об этом менеджера. Тогда он удалит у себя ненужный уже указатель, и сохранит работоспособность. 2. Хорошее решение: передай менеджеру право владением всеми теми объектами, с которыми он работает. Это означает, что наследники - собственность менеджера. Живут внутри его. И без его особого разрешения, никто их снаружи пригрохать не может. 3. Альтернативное решение: менеджер создает наследников. Наружу выдает интерфейсный указатель. Если снаружи интерфейсный указатель пригрохать, то перед гибелью, он успеет сообщить менеджеру о факте своей гибели. Менеджер соответственно, сможет принять меры и не поломается. 4. Решение в стиле ООП-с++: Архитектура имеет вид: пользовательские механизмы, внешне ни с кем не связанные. Внутри себя они сами инициализируют ядро (менеджера). И общаются с ним по невидимой пользователю связи. Механизмы пользователя можно создавать где угодно, и когда угодно. Они сами тут же связываются с ядром. Полностью автоматическая работа. Пользователю не нужно будет ничего в ручную пасти и подчищать. Ядро контролирует ресурсы. А пользовательские механизмы - лишь представление этих ресурсов для пользователей. А на самом деле - средство для связи с ядром. Поскольку ядро не доступно пользователям, то снаружи его не возможно повредить. |
|
11.12.2012, 23:42 | #7 |
С++, Delphi
Форумчанин
Регистрация: 24.11.2012
Сообщений: 495
|
Код:
вот если его папа класс тоже был бы шаблонным и имел данную перемменую того типа, то другое дело.
Если помог, тут весы есть , Вам не сложно, а мне приятно.
|
12.12.2012, 12:19 | #8 | |
Пользователь
Регистрация: 05.12.2012
Сообщений: 67
|
Цитата:
Решение, которое видится мне - создавать копии (не бейте по голове) наследников и передавать их менеджеру по методу notify(). Задача менеджера - обработать все подписчики наследника методом handle() (подписчиков, разумеется, несколько). Для этого, попробую использовать списки типов. Если кто-нибудь может показать, как записывать копии, буду рад. |
|
12.12.2012, 18:06 | #9 |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Держи:
http://ideone.com/tsEQTL Пример-иллюстрация ковариантных функций, или как сделать копию наследника, через базовый интерфейс: Код:
Последний раз редактировалось _Bers; 12.12.2012 в 18:11. |
13.12.2012, 10:41 | #10 | |
Пользователь
Регистрация: 05.12.2012
Сообщений: 67
|
Цитата:
http://ideone.com/tsEQTL пока недоступен, увы... |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание экземпляра класса | biohazard120 | Общие вопросы Delphi | 11 | 15.09.2012 13:23 |
C#(перехват нового экземпляра класса StackOverflowException) | Anett// | Помощь студентам | 0 | 12.05.2011 22:26 |
Освобождение памяти от экземпляра класса | Mixim | Общие вопросы .NET | 8 | 05.01.2011 17:27 |
удаление экземпляра класса | Juffin | Общие вопросы Delphi | 5 | 02.11.2010 11:57 |
ListBox, привязка экземпляра класса к Item. Возможно ли? | Casper-SC | Общие вопросы .NET | 1 | 24.05.2010 10:40 |