在我面临的问题中,我需要一些或多或少像多态类一样的东西,但是它允许虚拟模板方法。如何用模板方法(C++)模拟类中的多态性?
重点是,我想创建一个子问题数组,每一个都是通过一个不同的类实现的不同技术来解决的,但是保存相同的接口,然后传递一组参数(这些参数是函数/函子 - 这是模板跳转的地方)到所有子问题并找回解决方案。
如果参数是,例如,整数,这将是这样的:
struct subproblem
{
...
virtual void solve (double& solution, double parameter)=0;
}
struct subproblem0: public subproblem
{
...
virtual void solve (double& solution, double parameter){...};
}
struct subproblem1: public subproblem
{
...
virtual void solve (double* solution, double parameter){...};
}
int main{
subproblem problem[2];
subproblem[0] = new subproblem0();
subproblem[1] = new subproblem1();
double argument0(0),
argument1(1),
sol0[2],
sol1[2];
for(unsigned int i(0);i<2;++i)
{
problem[i]->solve(&(sol0[i]) , argument0);
problem[i]->solve(&(sol1[i]) , argument1);
}
return 0;
}
但问题是,我需要的参数是这样的
Arg<T1,T2> argument0(f1,f2)
,因此解决方法是喜欢的东西
template<T1,T2> solve (double* solution, Arg<T1,T2> parameter)
哪些显然不能显示为虚拟的(所以不能从指针到基类)被称为...
现在我很卡,不知道怎么PROCEDE ...
为什么不使用类模板而不是函数模板? – ForEveR
我希望子问题hyerarchy建立一次,并能够得到不同的参数... – Davide