[英]static_cast with boost::shared_ptr?
帶 boost boost::shared_ptr
的static_cast
等價物是什么?
換句話說,我該如何重寫以下內容
Base* b = new Derived();
Derived* d = static_cast<Derived*>(b);
使用shared_ptr
時?
boost::shared_ptr<Base> b(new Derived());
boost::shared_ptr<Derived> d = ???
使用boost::static_pointer_cast
:
boost::shared_ptr<Base> b(new Derived());
boost::shared_ptr<Derived> d = boost::static_pointer_cast<Derived>(b);
智能指針有三個強制轉換運算符: static_pointer_cast
、 dynamic_pointer_cast
和const_pointer_cast
。 它們位於命名空間boost
(由<boost/shared_ptr.hpp>
提供)或命名空間std::tr1
(由 Boost 或編譯器的 TR1 實現提供)。
作為評論:如果 Derived 實際上是從 Base 派生的,那么您應該使用 dynamic_pointer_cast 而不是 static 強制轉換。 系統將有機會檢測您的演員何時/是否不正確。
值得一提的是,Boost 提供的強制轉換運算符的數量與 TR1 的實現存在差異。
TR1 沒有定義第三個操作符 const_pointer_cast()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.