Форум программистов, компьютерный форум CyberForum.ru

Создание объекта произвольного класса по указателю на базовый класс - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
mir_zol
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 9
03.12.2012, 01:21     Создание объекта произвольного класса по указателю на базовый класс #1
Есть некий абстрактный базовый класс . Мы знаем , что от этого базового класса будет образовано несколько конкретных производных классов .Они будут реализововаться отдельно(про них мы ничего не знаем и с ними работать не можем ) .Нужно написать функцию , которая получает указатель на базовый класс (которому указывает на один из наших производный ) , и создает объект производного класса ,а затем возвращает указатель на базовый класс которому присвоен производный .
Пробовал через шаблоны , не получилось , может быть что-нибудь не так сделал , думаю нельзя ли как то это реализовать с помощью typeid , в частности нельзя ли как-то имея type_info создать объект этого класса.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.12.2012, 01:21     Создание объекта произвольного класса по указателю на базовый класс
Посмотрите здесь:

C++ Как удалить объект по указателю на базовый класс?
C++ Создать копию объекта производного класса зная указатель на базовый
Указателю на базовый класс присвоить адрес производного класса C++
Создание класса: Линейные целочисленные массивы произвольного размера с сортировкой вставками C++
Создание объекта через указатель на базовый абстрактный класс C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
03.12.2012, 01:32     Создание объекта произвольного класса по указателю на базовый класс #2
Может быть нужна фабрика?
mir_zol
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 9
03.12.2012, 01:37  [ТС]     Создание объекта произвольного класса по указателю на базовый класс #3
Цитата Сообщение от I.M. Посмотреть сообщение
Может быть нужна фабрика?
Извините , я вас не понял , не знаю , что это означает на сленге , не понял вас .
I.M.
 Аватар для I.M.
564 / 547 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
03.12.2012, 01:40     Создание объекта произвольного класса по указателю на базовый класс #4
Это не совсем сленг. Если совсем упрощенно, то фабрика выглядит так:
C++
1
2
3
4
5
6
7
8
9
base* factory(int i_type)
{
   switch(i_type)
   {
   case 0: return new derived1();
   case 1: return new derived2();
   default: return 0;
   }
}
mir_zol
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 9
03.12.2012, 01:45  [ТС]     Создание объекта произвольного класса по указателю на базовый класс #5
Да , но проблема в том , что мы не знаем ни количество типов , ни их имен , вот как реализовать фабрику в таком случае?
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
03.12.2012, 02:38     Создание объекта произвольного класса по указателю на базовый класс #6
У вас должен быть задан явно кто-то, кто знает, что за класс надо создавать и как именно его создавать. Вот у вас "создаёт объект производного класса". Как именно создаёт? Каким конструктором? Кто-то должен это знать, и это точно не базовый класс или какая-то левая функция. Это проблемы ж того настоящего объекта, на который указывает указатель. Сделайте эту функцию виртуальным методом базового класса, вызывайте её через тот указатель на базовый класс, который получили, а производные пусть уже реализовывают её так, как им надо.
Yandex
Объявления
03.12.2012, 02:38     Создание объекта произвольного класса по указателю на базовый класс
Ответ Создать тему
Опции темы

Текущее время: 11:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru