статический бросок с повышением:: общий ptr?
что эквивалентно static_cast С boost::shared_ptr?
другими словами, как мне переписать следующее
Base* b = new Derived();
Derived* d = static_cast<Derived*>(b);
при использовании shared_ptr?
boost::shared_ptr<Base> b(new Derived());
boost::shared_ptr<Derived> d = ???
4 ответа:
использовать
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 вашего компилятора).