|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
19.07.2011, 07:06 | #1 |
C++
Форумчанин
Регистрация: 27.03.2011
Сообщений: 803
|
Полиморфизм. Идентификация класса-наследника
Рассмотрим простой код:
Код:
Ищете информацию по C++?
cplusplus.com Последний раз редактировалось Сtrl; 19.07.2011 в 07:59. |
19.07.2011, 07:58 | #2 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Если у Base будет виртуальная функция, например, чисто виртуальный деструктор, т.е.Base предполагается абстрактым, то можно через dynamic_cast. Не забыть только включить поддержку rtti.
Код:
Последний раз редактировалось EUGY; 19.07.2011 в 08:01. |
19.07.2011, 08:02 | #3 |
C++
Форумчанин
Регистрация: 27.03.2011
Сообщений: 803
|
Все, вроде сообразил - dynamic_cast возвращает нулевой указатель, если преобразование невозможно. Спасибо.
А поддержка RTTI в настройках компилятора включается, или где? Ищете информацию по C++?
cplusplus.com |
19.07.2011, 08:06 | #4 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
|
19.07.2011, 08:08 | #5 |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
Можно так ешё
Код:
Последний раз редактировалось _-Re@l-_; 19.07.2011 в 08:13. |
19.07.2011, 08:11 | #6 |
C++
Форумчанин
Регистрация: 27.03.2011
Сообщений: 803
|
Я пробовал так. Во-первых, сравнение - это ==, а не =. Во-вторых, не знаю как typeid должен работать, но в моей студии он определяет тип по типу указателя, а не самого объекта. Может, это потому что я RTTI не включал (как EUGY выше сказал).
Ищете информацию по C++?
cplusplus.com |
19.07.2011, 08:14 | #7 |
C++, Java
Старожил
Регистрация: 10.04.2010
Сообщений: 2,665
|
Опсть, прошу прощения, да, вы правы, просто только проснулся, даже не вижу что пишу
Последний раз редактировалось _-Re@l-_; 19.07.2011 в 08:18. |
19.07.2011, 08:21 | #8 |
Форумчанин
Регистрация: 11.07.2010
Сообщений: 914
|
Скажу несколько не в тему, но все же.
В MFC (при всей моей не любви) оригинально организована rtti для своих объектов через DECLARE_DYNAMIC. Помнится, когда изучал, получил интеллектуальное наслаждение. |
19.07.2011, 08:36 | #9 |
C++
Форумчанин
Регистрация: 27.03.2011
Сообщений: 803
|
_-Re@l-_, EUGY, оба ваших метода работают, только нужно, чтобы была хоть одна виртуальная функция. Еще раз спасибо! Кстати, я макрос написал для проверки типа:
Код:
Ищете информацию по C++?
cplusplus.com |
19.07.2011, 10:25 | #10 |
Старожил
Регистрация: 19.08.2009
Сообщений: 2,119
|
Сtrl
Можно его как-то заменить на функцию? Все-таки макросы - это не очень хорошо. монопенисуально. Код:
А вы почему со мной не соглашаетесь, у вас что, импотенция? (c) ACE Valery
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Где найти наследника от TreeView с привязкой к набору данных? | Greek9000 | Общие вопросы .NET | 3 | 18.05.2011 07:57 |
конструктор наследника абстрактного класса | tiger() | Visual C++ | 5 | 15.05.2011 07:16 |
Netbeans редактирование фрейма из класса не наследника | Nicko_mt | Общие вопросы по Java, Java SE, Kotlin | 3 | 19.04.2011 15:35 |
[B]Написать наследника компонента. Delphi.[/B] | OnCreate | Помощь студентам | 0 | 19.10.2010 22:44 |
Создание наследника | ImmortalAlexSan | Общие вопросы Delphi | 4 | 29.04.2010 14:19 |