这是另一个问题的后续(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 伙计们。皮特