從基類對象做向下轉換時拋出我仍然不知道爲什麼下面給出std::bad_cast
例外bad_cast異常參考派生類對象
#include <typeinfo>
class A {virtual void fun() {}};
class B : public A {};
int main() {
try {
A a;
B b = dynamic_cast<B&>(a);
} catch (std::bad_cast& e) {
std::cerr << e.what() << '\n';
}
}
類A
是一個多態類 類B
是公開從A
衍生通過引用正確地從基類A
對象中進行降級,dynamic_cast
確實接受引用參數 ,但仍然會出現此異常?
您是否期望轉換操作符返回對有效B對象的引用?它在哪裏可以找到一個? –
'A''不是'B',所以演員失敗是正確的行爲。 – dasblinkenlight
如果您不想要異常,則將其轉換爲指針而不是引用,然後檢查針對nullptr的返回值以查看轉換是否成功。 – xaxxon