私は、いくつかの要素が方向を持つことができるコードに取り組んでいます。つまり、それらの空間位置は参照フレームに対して相対的です。
という抽象基本クラスを作成してOrientedObject
から、このクラスのインスタンスに作用するアルゴリズムのコレクションを作成できます。
また、独自のoriented
概念を定義し、その概念を満たす型に作用する汎用アルゴリズムを作成することもできます ( Boost Geometry Libraryの設計と同様)。
Boost Generic Programming Techniquesページによると:
概念は、有効な式、関連付けられた型、不変条件、および複雑さの保証で構成される一連の要件です。要件を満たす型は、概念をモデル化すると言われています。概念は、洗練と呼ばれる別の概念の要件を拡張できます。
したがって、oriented
概念は、必要なタイプ (ベクトルなど)、有効な操作 (など) のコレクションとして定義できますrotate
。
継承が関係をモデル化し、概念が何かが であるかどうかを定義する場合、概念は継承の形式を表し、(ダックタイピングの線に沿って)より実用的で拡張可能になります。適切に定義するには知的に複雑です。
現在、関連する型のコンテナーを作成する場合は、継承が必要です。たとえば、同じ基本クラスに属していない限り、指向型のコンテナーを作成できませんでした。
そのため、自分の概念を継承の観点から定義するかconcept
、継承の観点から定義するかを決めるのに苦労しています (他の形式は考えられません)。
何かガイダンスを提供できますか?