簡介:
簡介:替代方案:靜態與動態唯一指標轉換:
為了解決這個問題,我們可以利用下列方法函數範本:實作:
template<typename Derived, typename Base, typename Del> std::unique_ptr<Derived, Del> static_unique_ptr_cast(std::unique_ptr<Base, Del>&& p) { auto d = static_cast<Derived *>(p.release()); return std::unique_ptr<Derived, Del>(d, std::move(p.get_deleter())); } template<typename Derived, typename Base, typename Del> std::unique_ptr<Derived, Del> dynamic_unique_ptr_cast(std::unique_ptr<Base, Del>&& p) { if (Derived *result = dynamic_cast<Derived *>(p.get())) { p.release(); return std::unique_ptr<Derived, Del>(result, std::move(p.get_deleter())); } return std::unique_ptr<Derived, Del>(nullptr, p.get_deleter()); }
用法:
的無意修改
以上是如何在 C 中安全地將 `unique_ptr` 向下轉換為 `unique_ptr` ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!