これは別の質問の続きです(https://stackoverflow.com/questions/10712659/c-class-design-for-monte-carlol-simulation)
テンプレートを使用して、統計分布クラスを実装することを計画しています。DistributionをEntityクラスのプロパティにしたい。このDistributionクラスは、TriangleDistribution、NormalDistribution、WeightedDistributionなど、いくつかの異なる形式をとることができますが、これらは実行時にのみ認識されます。それらはほとんどのメソッドを共有しますが、各タイプにはいくつかのカスタムメソッドもある場合があります。正規分布の場合はsetMean、WeightedDistributionの場合はsetWeights。
私が理解しているように、C ++テンプレートは型を参照し、それを使用して使用する実装を決定します。テンプレートを使用してさまざまな配布タイプを実装することが提案されました。
私はC++テンプレートの概念を理解していると思いますが、この配布の問題を解決するためにそれらを実装する方法がわかりません。テンプレートの特殊化を使用して、次のようなものを作成しますか?:
template <WeightedDistribution>
class Distribution {
WeightedDistribtion wd;
public:
Distribution () {}
double sample () {
// Custom implementation of sample
// for weighted distribution
}
};
// class template specialization:
template <>
class Distributionr <NormalDistribution> {
NormalDistribtion nd;
public:
Distribution () {}
double sample ()
{
// Custom implementation of sample for
// a normal distribution
}
};
これには、配布タイプごとに多数のタイプを作成する必要があります。TIAの人たち。ピート