2014年2月24日月曜日

C++, pointer: std::enable_from_this が派生するクラスについて不便なので enable_from_this_wrap を定義するはなし

いきさつ:
それで enable_from_this_wrap へ:

さっそく std::enable_from_this を使う事にして少しだけ手間が省けたものの、それだけでは派生するクラスについて不便なので、ラッパーを用意する事に。

ちょっと調べたらBoost-1.53以前で同じこと考えて実装例を挙げてくれる人が居ました(╹◡╹)
参考: in the box - shared_from_this をもうすこしだけ this らしく 
※この参考の実装だとBoost-1.54で廃止になったboost::shared_static_castが使われている点にご注意ください。

これを元にC++11のstd::ベースで再実装したのがいかになります。

C++標準機能だけで実装できますし、便利になったので、もとの「いきさつ」の悩みはとりあえずこれで解決しようと思います(╹◡╹)


参考:

  1. in the box - shared_from_this をもうすこしだけ this らしく
  2. Boost-1.54 Smart Pointer Changes
  3. cplusplus.com - std::dynamic_pointer_cast

0 件のコメント:

コメントを投稿