開発環境 | 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
Func
がboost::shared_ptr
を保持しているようです。
前回のようにデストラクタが先に実行されることはなく、前々回のようにObject
のコピーがたくさん発生することもありません。完璧。
boost::function
とboost::shared_ptr
を使うと、
継承を使わなくても多態性を実現できるようです。
GoFのパターンに応用すると実装が簡潔にできそうです。
特にCommandパターンとは相性が良いのではないかと思います。
以上。続きません。
投稿者 MASATO : 2008年03月11日 22:46 | トラックバック