ポリモーフィック オブジェクト ツリーの多くのインスタンス間でデータを共有する必要がある状況にありますが、共有データを「ツリーごと」にする必要があるため、基本クラスで静的クラス メンバーを使用することは実際にはオプションではありません。 .
共有データへの余分なメンバー ポインターで各インスタンスに「過負荷」をかけたくないので、現在のアプローチ (ツリーを使用することを考慮) は、共有データをツリー ルート ノードのメンバーとして保持し、共有データへのアクセスごとに行うことです。 「ツリーグローバル」データがアクセスされる特定のノードの深さに応じて、間接的なチェーンを通過します。
共有データが非常に頻繁に (毎秒数百万... 少なくともそれが意図されている) アクセスされるシナリオがあるため、ルートノードに到達するための間接的なアクセスを回避するのに役立つ設計パターンがあるかどうか疑問に思います。オブジェクトのフットプリントに余分な膨張を導入しません。
共有データにアクセスするタイトなループなどのローカルとしてルート ノード ポインターを「キャッシュ」することは可能ですが、機能がツリー ノードに沿ってカスケードし、プロセス内でツリーを切り替えるシナリオも多数あるため、ルート ノード ポインターをキャッシュします。狭い文脈でのみ適用されます。
- 静的メンバーの言及は、実装の範囲を C++ に限定するものではないことに注意してください。この時点で私はどんなアイデアにもオープンであるため、C タグも追加しました。