最近 boost を使いながらゲーム製作してて、ふと思うことがある。
なるほどboostは便利だ。けど、boostのコンテンツって、なんか名前が長くないか? と。
よく使われるshared_ptr
も、確かに boost 中じゃ短い部類なんだけど、hoge* p;
とboost::shared_ptr
じゃ書く手間がぜんぜん違うわけで。using boost::shared_ptr;
とかすれば少しはマシになるわけですが、それでも素のポインタに比べれば冗長。かといってtypedef boost::shared_ptr
とかWin32API風にtypedefするのはアレだし、どうも良い方法がないものか・・・
と思ったので、そのための部品を作ってみた。
template<typename Derived> class shared_object { public: typedef boost::shared_ptr<Derived> ptr; typedef boost::weak_ptr<Derived> wptr; typedef boost::shared_ptr<const Derived> const_ptr; typedef boost::weak_ptr<const Derived> const_wptr; };
ソースはこれだけ。使用方法は、クラスを作るときに
class hoge : public shared_object<hoge> { // 適当に中身をここに記述 };
こうすれば、hogeのshared_ptrが欲しい時にはhoge::ptr p;
でおっけー。shared_ptr
よりもだいぶ短くなる。