这是另一个问题(https://stackoverflow.com/questions/10712659/c-class-design-for-monte-carlol-simulation)
的后续内容我计划使用模板实现统计分布类。 我想让Distribution成为Entity类的属性。此Distribution类可以采用几种不同的形式 - TriangleDistribution,NormalDistribution和WeightedDistribution,但这些只在运行时才知道。它们共享大多数方法,但每种类型也可能有一些自定义方法,例如。 setMean用于NormalDistribution,setWeights用于WeightedDistribution。
据我了解,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伙计们 皮特
答案 0 :(得分:0)
如果你足够幸运,你可能不需要实施任何东西。
答案 1 :(得分:0)
如何从Rob Kennedy实现boost的正态分布包装得到了一个很好的答案。看到 https://stackoverflow.com/questions/10831003/efficient-boost-distribution-usage for answer