私は、2つの大きな継承ツリーを持つ数学的なソフトウェアフレームワークを扱っています。これは概念的に触発されています.1つは一般関数(それはFunc
から継承されます)と1つは正規化された確率密度関数(それらはPdf
から継承されます)です。異なる継承を持つ同じクラスのバージョン
しかし、原則として両方の階層に存在するいくつかのクラスがあります。例えば、Gauss
関数です。現時点で
は、同一のソースコード実装とGaussFunc
とGaussPdf
クラスは、クラス名と、それぞれFunc
とPdf
、から継承を除いて、存在します。
この状況を改善するために、ソースコードの2番目のコピーを取り除きたいと思います。例えば、プリプロセッサマクロを#include
ステートメントと組み合わせて使用するなど、継承ツリー全体を乱すことなくこれを解決するいくつかの方法を考えることができますが、これで行うのが最も賢明なことはわかりません状況。
このような状況での進め方についてのご意見は、大歓迎です。しかし、私はこの問題を先験的に回避するためにソフトウェアプロジェクト全体を再構築することはできないことに注意してください(これは確かに最も純粋なアプローチですが、私の仕事の時間枠内では不可能であり、約)。ちょうどあなたがこのように、継承するクラステンプレート化
:ここ
はライブデモです。ソースコードなしで伝えるのは難しいです。 – imreal
Pdfは別の階層ではなく、主階層のテンプレート(テンプレートに基づいています) – Swift
@imreal:ソースコードの詳細は興味深いと思いますか?クラス全体のソースは〜2000行なので、それを貼り付けるのはちょっと範囲を超えています:-) – carsten