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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
mir_zol
0 / 0 / 0
Регистрация: 03.12.2012
Сообщений: 9
#1

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

03.12.2012, 01:21. Просмотров 1331. Ответов 5
Метки нет (Все метки)

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

C++ Как удалить объект по указателю на базовый класс?
Возможно ли создание объекта шаблонного класса в функции этого класса? C++
C++ Создать копию объекта производного класса зная указатель на базовый
C++ typeid определяет тип указателя на базовый класс, как тип "базовый класс". Вне зависимости от присвоенного ему значения
Указателю на базовый класс присвоить адрес производного класса C++
Создание объекта через указатель на базовый абстрактный класс C++
Как при помощи указателя на базовый класс обратится к полю наследуемого класса? C++
Базовый класс Deposit и три класса-наследника (банковские вклады) 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
1240 / 989 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
03.12.2012, 02:38     Создание объекта произвольного класса по указателю на базовый класс #6
У вас должен быть задан явно кто-то, кто знает, что за класс надо создавать и как именно его создавать. Вот у вас "создаёт объект производного класса". Как именно создаёт? Каким конструктором? Кто-то должен это знать, и это точно не базовый класс или какая-то левая функция. Это проблемы ж того настоящего объекта, на который указывает указатель. Сделайте эту функцию виртуальным методом базового класса, вызывайте её через тот указатель на базовый класс, который получили, а производные пусть уже реализовывают её так, как им надо.
Yandex
Объявления
03.12.2012, 02:38     Создание объекта произвольного класса по указателю на базовый класс
Ответ Создать тему
Опции темы

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