私は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_cast
orboost::dynamic_pointer_cast
を C++ キャストstatic_cast
andの類似物として使用し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 ライブラリの名前空間も同様です。)