在我面臨的問題中,我需要一些或多或少像多態類一樣的東西,但是它允許虛擬模板方法。如何用模板方法(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