私はpolymorphic_cast通常のポインターのブーストに精通しています:
Base *base;
Derived *d = boost::polymorphic_cast<Derived>(base);
しかし、boost::shared_ptr代わりにそれを使用する方法は?
boost::shared_ptr<Base> base;
boost::shared_ptr<Derived> d = boost::?????(base);
私はpolymorphic_cast通常のポインターのブーストに精通しています:
Base *base;
Derived *d = boost::polymorphic_cast<Derived>(base);
しかし、boost::shared_ptr代わりにそれを使用する方法は?
boost::shared_ptr<Base> base;
boost::shared_ptr<Derived> d = boost::?????(base);
boost::static_pointer_castorboost::dynamic_pointer_castを C++ キャストstatic_castandの類似物として使用しdynamic_castます。
boost::shared_ptr<Derived> d = boost::static_pointer_cast<Derived>(base);
// now "d" shares ownership with "base"
これは、基になる生のポインターに対してそれぞれのキャストを実行するだけです。
std( C++11 標準ライブラリのstd::tr1名前空間と C++03 の TR1 ライブラリの名前空間も同様です。)