Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > безопасное преобразование типов |
Автор: Jcs 22.1.2004, 08:36 | ||
В каких случаях dynamic_cast генерит исключения? Может быть, кроме наличия виртуальных функций есть еще какие необходимые требования?
|
Автор: Jcs 22.1.2004, 10:19 |
Все нормально работает, просто забыл поддержку rtti включить |
Автор: Jcs 22.1.2004, 12:29 |
Опять ошибся... Щас генерится bad_cast, в прошлом случае было "non rtti-types" или чего-то в этом роде. Если же ссылки заменить на указатели, то никаких исключений не генерится. Может быть для ссылок и указателей используетс я разная семантика? |
Автор: Waters 27.1.2004, 20:22 | ||
Да, в случае ссылок dynamic_cast сам проверяет результат преобразования и в случае неудачи выбрасывает исключение bad_cast. Оно и понятно - ведь ссылка не может быть невалидной. В случае каста к указателю этого нет. Если интересуют подробности - глава 15.4.1.1 (это по специальному изданию). wbr. |
Автор: Jcs 28.1.2004, 16:05 |
Спасибо, в случае указательного каста возвращается нулевой указатель, если объект для преобразования не был создан как базовый. Толстый, однако, этот dynamic_cast, к typeinfo долбится, исключения генерит.. |