std::bad_cast
Материал из cppreference.com
| Определён в заголовочном файле <typeinfo>
|
||
| class bad_cast : public std::exception; |
||
Исключение этого типа возникает, когда применяется оператор dynamic_cast к ссылочному типу и происходит ошибка при проверки времени выполнения (например, если тип не входит в отношения наследования), а также из-за std::use_facet, когда требуемый аспект не существует в текущей локализации.
Содержание |
[править] Функции-члены класса
| Создаёт новый объект bad_cast (public функция-член) | |
Унаследован от std::exception
Member functions
| [virtual] |
уничтожает объект исключения (virtual public std::exception функция-член)
|
| [virtual] |
возвращает строку-пояснение (virtual public std::exception функция-член)
|
[править] Пример
Запустить этот код
#include <iostream> #include <typeinfo> struct Foo { virtual ~Foo() {} }; struct Bar { virtual ~Bar() {} }; int main() { Bar b; try { Foo& f = dynamic_cast<Foo&>(b); } catch(const std::bad_cast& e) { std::cout << e.what() << '\n'; } }
Возможный вывод:
Bad dynamic cast


