2008年03月11日

boost::function その3

開発環境Visual C++ 2008

前回の続きです。
前回FuncオブジェクトにObjectへのポインタを渡していましたが、今回はboost::shared_ptr<Object>を渡してみました。

void Test3B(void)
{
  boost::function<void ()> Func;
  {
    boost::shared_ptr<TestClass> Object(new TestClass);
    Func = boost::bind(&TestClass::Test, Object);
  }
  Func();
}

コンパイルは問題なし。boost::shared_ptrも使えるんですね。
実行結果は以下の通り。

Constructed this=00387600
Func this=00387600
Destructed this=00387600

Funcboost::shared_ptrを保持しているようです。 前回のようにデストラクタが先に実行されることはなく、前々回のようにObjectのコピーがたくさん発生することもありません。完璧。

boost::functionboost::shared_ptrを使うと、 継承を使わなくても多態性を実現できるようです。
GoFのパターンに応用すると実装が簡潔にできそうです。 特にCommandパターンとは相性が良いのではないかと思います。

以上。続きません。

投稿者 MASATO : 2008年03月11日 22:46 | トラックバック
コメント
コメントする









名前、アドレスを登録しますか?