template <typename To, typename From, typename Deleter> std::unique_ptr<To, Deleter> dynamic_unique_cast(std::unique_ptr<From, Deleter>&& p) { if (To* cast = dynamic_cast<To*>(p.get())) { std::unique_ptr<To, Deleter> result(cast, std::move(p.get_deleter())); p.release();...
}; std::shared_ptr<Father> father; std::shared_ptr<Son> son = std::dynamic_pointer_cast<Son>(father); 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
std::shared_ptr不能转换为unique_ptr。在您的情况下,您只需要以下内容:
std::shared_ptr不能转换为unique_ptr。在您的情况下,您只需要以下内容:
七十八、static_cast和dynamic_cast,static_poonter_cast和dynamic_pointer_cast区别,一、static_cast和dynamic_cast区别:1、static_cast:向上转换,例如:基类向派生类转换2、dynamic_cast:向下转换,例如
template<class T, class U> std::shared_ptr<T> dynamic_pointer_cast(const std::shared_ptr<U>& ptr) noexcept; std::dynamic_pointer_cast的别名是dynamic_pointer_cast,它是该函数的常用简称。 该函数的作用是将一个指向基类的shared_ptr或weak_ptr对象转换为指向派生类的shared_ptr对象。它会检查指针的...