2

私は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);
4

1 に答える 1

2

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 ライブラリの名前空間も同様です。)

于 2013-01-23T22:02:10.387 に答える