![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 03.12.2012
Сообщений: 8
|
![]()
Есть некий абстрактный базовый класс . Мы знаем , что от этого базового класса будет образовано несколько конкретных производных классов .Они будут реализововаться отдельно(про них мы ничего не знаем и с ними работать не можем ) .Нужно написать функцию , которая получает указатель на базовый класс (которому указывает на один из наших производный ) , и создает объект производного класса ,а затем возвращает указатель на базовый класс которому присвоен производный .
Пробовал через шаблоны , не получилось , может быть что-нибудь не так сделал , думаю нельзя ли как то это реализовать с помощью typeid , в частности нельзя ли как-то имея type_info создать объект этого класса.[/B] |
![]() |
![]() |
![]() |
#2 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Такое?
http://ideone.com/CXoC1p |
![]() |
![]() |
![]() |
#3 | |
Регистрация: 03.12.2012
Сообщений: 8
|
![]() Цитата:
Код:
|
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,372
|
![]()
То, что вам предложил netrino это такая функция и есть - вызывается из класса А а создает класс В. Другое дело, что надо самому писать, но это не так уж и сложно а и все нужное можно закатать в макрос.
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 03.12.2012
Сообщений: 8
|
![]()
нет вы меня не так понимаете , то что объяснил нитрино я могу осуществить , но если попытаться объяснить на примере , то как предлагает нетрино , это например я отдаю кому-то свой базовый класс , говорю , вот можем образовывать он него наследников , вот такие функции в нем будут гарантировано работать , а вот чтобы работала функция такая та , тебе надо написать в производном классе другую функцию , с такой-то сигнатурой , которая делает то-то , а я хочу я отдаю свой базовый класс и все , в наследниках ничего для обеспечения работы функций базового класса не надо дописывать . То есть
Код:
|
![]() |
![]() |
![]() |
#6 |
Участник клуба
Регистрация: 15.07.2008
Сообщений: 1,933
|
![]()
Пример, который я привёл, показывает реализацию на тривиальном примере. Но! Если дело дойдёт до хоть сколько-нибудь близкого к реальности кода, то обнаружится, что у производных классов будут поля, которых нет у базового. Как следствие, чтобы сконструировать корректный объект, необходимо передать определённые параметры в конструктор, о которых базовый класс знать не будет. То есть в любом случае, корректно себя сконструировать может только производный класс, это его обязанность и именно ему и нужно её оставить.
В принципе, можно сделать шаблон, который для каждого наследуемого от него класса будет генерировать Код:
http://ideone.com/d4CGtv |
![]() |
![]() |
![]() |
#7 |
Регистрация: 03.12.2012
Сообщений: 8
|
![]()
Спасибо , последний вариант мне подходит , спасибо большое .
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создание объекта класса | KyJIJIEP | Visual C++ | 3 | 20.09.2012 01:29 |
Создание объекта класса в WinMain | Стремящийся | Win Api | 5 | 10.03.2012 19:01 |
[Java] Создание объекта внутри объекта этогоже класса. | Svarogich | Помощь студентам | 2 | 01.08.2011 16:03 |
как удалить объект по указателю на его базовый класс? | AndreyBS | Общие вопросы C/C++ | 5 | 17.04.2011 11:29 |
Создание объекта класса | Serjuk | Помощь студентам | 1 | 23.05.2010 19:30 |