Re: dynamic_cast, std::bad_cast
От: _Hooter Россия  
Дата: 12.10.10 15:03
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Немного непонятно что происхлодит при dynamic_cast когда преобразуются ссылки (не указатели). Если тип неверный то вроде бы кидается исключение std::bad_cast. std::bad_cast относится к STL? На платформах где нет STL как это работает.


А что за платформа, если не секрет?

Вообще, если речь идет о том, как обрабатывать ошибки cast'а при отключенных исключениях, то решение тут одно — не использовать код, который может сгенерировать исключение.

Проблема заключается в том, что по Стандарту при dynamic_cast ссылок исключение должно быть сгенерировано в случае ошибки. Если же программист по каким-то причинам отключил обработку исключений при компиляции, то по Стандарту он должен использовать dynamic_cast для указателей. Стандарт оговаривает две формы dynamic_cast и переносит всю ответственность за использование на программиста. Поэтому, так как по Стандарту исключение должно быть сгенерировано, то исключение будет сгенерировано в любом случае, даже если программист отключил обработку исключений при компиляции. Далее при возникновении исключения, если обработчиков исключений нет, произойдет простой вызов terminate() и процесс завершится.

Всё это правда, если реализация стандартной библиотеки соответствует Стандарту. Если же реализация не соответствует Стандарту, то в документации к ней долно быть описание. Однако при использовании такой неСтандартной библиотеки нужно понимать, что скорее всего у такого кода будут проблемы с портированием.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.