[尝试将dynamic_pointer_cast类型的共享点键入A时遇到崩溃。类型B与类型B不相关,并且我希望为空A,但是会引发上述异常。有没有不安全使用shared_ptr的方案?
dynamic_pointer_cast
A
B
shared_ptr
此处引发异常:
使用MSVC 14.16.27023
要求格式正确,如果std::dynamic_pointer_cast(源)到U*(目标)的转换。如果不是,则您有未定义的行为。如果要像从T*中获取空指针一样,那么您将必须编写自己的版本来执行此操作。
std::dynamic_pointer_cast
U*
T*
另一个选项是测试]的结果>
dynamic_cast如果成功,则调用dynamic_cast<decltype(destination_ptr.get())>(source_ptr.get()) ,否则返回空指针。
dynamic_cast
如果成功,则调用dynamic_cast<decltype(destination_ptr.get())>(source_ptr.get()) ,否则返回空指针。
dynamic_cast<decltype(destination_ptr.get())>(source_ptr.get())