<< 前 ホーム 次 >>

bakaid: 20061114

Boostのshared_ptrにはget()があって、生ポインタを
取り出せるんですよね。これ、非難の対象になることが
度々あるみたいですけど、自分は悪くないと思うんです
よね。

前にも書きましたけど、shared_ptrを使いたくなるのは、
newしたオブジェクトをvectorなんかのメンバ変数で
持ちたいとき:

class Container {
private:
    vector<shared_ptr<Elment> > elements;
    ...
};

当然、このクラスの内外で、vectorの要素1つに対する
処理がありますよね。そんなとき、わざわざshared_ptrを
渡す必要はないですよね:

void
do_something(Element *e)
{
    ....
}

もちろん、これがうまくいくためには、『生ポインタに
対してdeleteしちゃいけない』っていう紳士協定が
必要になります。でも、ただでさえ忘れるdeleteを
わざわざやるバカはいないでしょ (笑)。

これは効率を気にしていってるわけじゃないんです。
shared_ptr<Element>なんていちいちタイプしたく
ないんです (笑)。typedefも嫌いだし。

--

いや、インテリセンスがあるとかの問題じゃないよ。
目にうるさいのはやっぱり害悪だから。

--

心配しすぎるとロクなことにならない。そういうのは
Singletonパターンに似て、やるだけムダ。

本家Permlink

<< 前 ホーム 次 >>


Copyright © 1905 tko at jitu.org

バカが征く on Rails