![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() |
Tony |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Мужской Репутация: ![]() ![]() ![]() |
Доброго всем времени суток.
Имеется такой код: class CBase т.е. есть некий базовый абстрактный класс, у которого много наследников. Далее происходит вот что: CBase *pBase = new CDerv1; Вопрос : очевидно, например с помощью typeid мы можем узнать тип объекта, на который на самом деле указывает pBase. Существует ли простой способ автоматически преобразовать pBase из типа CBase* в тип того объекта, на который он на самом деле указывает (в данном случае в CDerv1*)? |
![]() ![]() |
Tony |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 17 Пол: Мужской Репутация: ![]() ![]() ![]() |
Да, извиняюсь, что не уточнил. Есть некая перегруженная функция F, которая будет обрабатывать различные типы указателей(т.е. CDerv1*, CDerv2* и т.п).
P.S. Я понимаю, конечно, что можно написать как-то так: if ( typeid(*pBase).name() == "CDerv1" ) F( (CDerv1*)pBase ); но тогда получится, что при добавлении нового наследника придется дописывать новое условие. Возможно ли избежать этого? |
![]() ![]() |
![]() |
Текстовая версия | 19.07.2025 14:56 |