スマートポインタのキャスト
boostのshared_ptrは非常に便利で常日頃からお世話になっているが,派生クラスへのキャストを行いたい時はどうすればいいのかと思っていたら,dynamic_pointer_castというものを使えばよいらしい.
#include <boost/shared_ptr.hpp> class base { public: base() { } virtual ~base() { } } class derived : public base { public: derived() { } virtual ~derived() { } } void func() { boost::shared_ptr<base> p_base(new base); boost::shared_ptr<derived> p_derived; p_derived = boost::dynamic_pointer_cast<derived>(p_base); }
しかし,boost::dynamic_pointer_castってのはちょっと長すぎやしませんかね.