【发布时间】:2015-04-17 13:02:45
【问题描述】:
我正在实现一种遗传算法,该算法应该适用于抽象基因组类型。
我的设置是这样的:
class AbstractGenome
{
virtual void init() = 0;
virtual void mutate() = 0;
.
.
.
};
class GeneticAlgorithm
{
std::vector<AbstractGenome*> genomes;
void init(int numGenomes)
{
for (int i=0; i < numGenomes; ++i)
{
AbstractGenome *genome = new DerivedGenome(); <=This is where my problem is
genome->init();
genomes.push_back(genome);
}
}
}
DerivedGenome 将在稍后(在某些时候)定义为:
class DerivedGenome: public AbstractGenome
{
void init() { do stuff; }
void mutate() {do stuff; }
}
我的问题是我对 DerivedGenome 的唯一了解是它派生自 AbstractGenome - 因此我无法对 DerivedGenome 构造函数进行一般调用。
我能想到解决这个问题的一种方法是从遗传算法派生并覆盖所有基因组类型的 init 函数,但我想知道是否有更好的方法来解决这个问题,例如通过模板?
提前非常感谢。
【问题讨论】:
-
...究竟是什么问题?
-
好点。查看我的编辑。