Boost::Intrusive ライブラリのベース フックとメンバー フックの違いは何ですか?
ブーストのドキュメントを読みましたが、それほど説明的ではありません。
Boost::Intrusive ライブラリのベース フックとメンバー フックの違いは何ですか?
ブーストのドキュメントを読みましたが、それほど説明的ではありません。
私が知る限り、それはスタイルとオブジェクト指向設計の問題です。基本フックは継承階層に侵入し、追加のpublic
親クラスを必要とし、設計上で複数の継承を強制する可能性があります。メンバー フックを使用すると、プログラマはオブジェクトをコンテナー メンバーシップとhas-a
の関係ではなく、コンテナーとの関係を持つものとして扱うことができますis-a
。
オブジェクトが単一のコンテナにのみ含まれることを意図している場合、ベースフックの方が便利なようです。それ以外の場合 (複数のコンテナーの場合)、複数のメンバー フックを使用すると、あいまいさの少ないソリューションが提供されます (多重継承が回避されるため)。
http://www.boost.org/doc/libs/1_47_0/doc/html/intrusive/recursive.html 「メンバーフックは再帰構造には適していません」