![]() |
|
|
![]()
|
|
| stmamont |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: 3 Всего: 3 |
как мне теперь создать копию n? Так что бы работала функция f. В классе ChildClass гарантированно только бывшие виртульные методы. .туплю. |
||||
|
|||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Во первых, корректно укажите описание классов. Например AbstractClass и ChildClass никак не связаны. И что такое getModule() ?
Добавлено @ 13:43 Кстати
Что такое "бывшие виртуальные методы"? -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| FFFFFFF7 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.10.2006 Репутация: 2 Всего: 2 |
А че конструктор не описал? Хоть и не обязательно...
В общем случае нужно начитнать с: AbstractClass *n = new AbstractClass; --------------------
Да помоги кодеру, а значит - ближнему своему! |
|||
|
||||
| Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 1 Всего: 29 |
||||
|
||||
| FFFFFFF7 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 167 Регистрация: 13.10.2006 Репутация: 2 Всего: 2 |
ой #ля
Да, конечно. В таком случае строим производный класс, и уже от него порождаем. всегда. Просто бываю невнимательным Damarus, спс, что поправил --------------------
Да помоги кодеру, а значит - ближнему своему! |
|||
|
||||
| Yra |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 12.9.2006 Где: Украина, Киев Репутация: нет Всего: нет |
Damarus, точно! создать объект обстрактного класс нельзя!
stmamont, ты бы указал наследника! |
|||
|
||||
| stmamont |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: 3 Всего: 3 |
извиняюсь за кривую формулировку.
Сейчас попытаюсь снова. укажу как я это разрешил.
У класса AbstractClass куча потомков. имен которых я не знаю. => я не могу создать экземпляр потомка. В AbstractClass определены такие свойства как списки из STL. В любом потомке. 100% нет новых свойств. Нет новых методов. Только определеныые виртуальные методы. Задача. Дано: Указатель на AbstractClass (хотя на самом деле там лежит какой то потомок, но какой я не знаю, и знать мне не надо) Требуется: Создать полную копию класса. Мое решение:
единственная загвоздка, так это то что такую функцию пришлось написать для каждого потомка AbstractClass... |
||||
|
|||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Ну теперь более-менее.
Проблема в том, что виртуальных конструкторов в С++ нет. Поэтому задача в лоб не решается. Вам нужно посмотреть паттерн "Абстрактная фабрика" Как вариант, могу предложить следующее
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| stmamont |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 343 Регистрация: 13.3.2004 Где: влг Репутация: 3 Всего: 3 |
Vyacheslav, ну именно так я и сделал, только без конструктора копирования.
А можно подробнее по поводу паттернов? и где можно почитать? |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Кстати тут как раз придутся к месту макросы, спор о которых зашел в сосоеднем топике
Тогда производные классы будут выглядеть так
Добавлено @ 16:24 Ну для начала здесь http://forum.vingrad.ru/topic-9713/hl/%D0%...0%B2/index.html http://forum.vingrad.ru/topic-12645/unread...0%B2/index.html -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |