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

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

Войти
Регистрация
Восстановить пароль
 
Egor138
30 / 11 / 2
Регистрация: 10.08.2012
Сообщений: 619
Записей в блоге: 2
#1

Шаблоны изменение типа - C++

18.10.2013, 20:44. Просмотров 246. Ответов 2
Метки нет (Все метки)

Передо мной стоит такая задача:

C++
1
2
3
4
5
6
7
8
9
class par1;
class par2;
class par3;
 
class MyClass  //Основной класс
{
public:
     ТИП parent;      
};
Есть у меня основной класс MyClass, у которого есть параметр-родитель. А качестве параметра я могу поставить любой экземпляр класса из par1, par2, par3.

Для решения данной задачи отлично подошли бы шаблоны, НО мне нужно, чтобы была возможность менять этого родителя - следовательно менять тип. Как я понял с помощью шаблона поменять уже установленный тип нельзя. Может подскажите какой нибудь из наиболее рациональных способов решения такой задачи.

Буду очень благодарен!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2013, 20:44     Шаблоны изменение типа
Посмотрите здесь:

Подстановка типа\шаблоны с++ - C++
Добрый день, не могу разобраться представим есть классец находится в .h enum MyEnum { enum1 = 0, enum2 = 1 } ...

Шаблоны, наследование и размер типа - C++
Суть вопроса в том, что имея два шаблона класса, унаследованных от общего предка, и инстанциируя "один другим" имеем + n байт к размеру...

Изменение типа - C++
Необходимо неконстантный указать сделать константным (чтобы нельзя было изменить значение, на которое указывает указатель) Пробую такой...

Изменение типа указателя - C++
Вот допустим у меня есть два простейших класса, объекты которов занимают в памяти одинаковое количество памяти class prim { ...

Запись информации из вектора типа string в вектор типа double - C++
Как записать только числа , которые хранятся в векторе типа стринг, в вектор типа дабл, в векторе типа стринг есть как буквы так и числа ,...

В массив типа double записываю целые числа (типа int), но ошибка не вылазиет! - C++
Вот программулька: #include <iostream> using namespace std; #include <conio.h> int main() { double arr={1,2,3,4,5}; ...

Шаблоны и т.д.( - C++
Создать 2 шаблонные классы с конструктором инициализации и конструктором копирования. Создать третий класс, наследующий свойства из двух...

Шаблоны - C++
Когда разделяю реализацию и прототип шаблонной в функции по разным файлам (*.h и *.cpp) происходит ошибка линковки... Я так понимаю, делать...

Шаблоны - C++
Есть два класса: #include <iostream> #include <string> #include <valarray> using namespace std; template <class T1, class T2> ...

Шаблоны - C++
Создать параметризированные классы List и ListItem. Классы должны содержать конструкторы, деструкторы, функции add, in, remove, getLength,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1411 / 1140 / 55
Регистрация: 21.04.2012
Сообщений: 2,362
Завершенные тесты: 3
18.10.2013, 21:18     Шаблоны изменение типа #2
Цитата Сообщение от Egor138 Посмотреть сообщение
менять тип.
Сам тип поменять во время выполнения нельзя; можно добавить par1, par2, par3 общего предка с необходимыми виртуальными методами и в MyClass хранить указатель на него; либо что-нибудь вроде union (или например boost::variant<par1, par2, par3>).
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,922
Записей в блоге: 1
18.10.2013, 21:31     Шаблоны изменение типа #3
Цитата Сообщение от Egor138 Посмотреть сообщение
Для решения данной задачи отлично подошли бы шаблоны
В каком это месте?
ИМХО эта задача не на шаблоны. Здесь скорее подойдёт наследование и полиморфизм.
C++
1
2
3
4
5
6
7
8
9
10
class base{};
class derived1:public base{};
class derived2:public base{};
class derived3:public base{};
 
class MyClass  //Основной класс
{
public:
     base* parent;      
};
Yandex
Объявления
18.10.2013, 21:31     Шаблоны изменение типа
Ответ Создать тему
Опции темы

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