私が直面している問題では、多態的なクラスのように機能するが、仮想テンプレートメソッドを可能にするものが必要です。
ポイントは、サブ問題の配列を作成し、それぞれが異なるクラスで実装された異なる手法によって解決されるが、同じインターフェイスを保持し、一連のパラメーターを渡すことです (関数/ファンクターです-これはテンプレートはすべての下位問題にジャンプして、解決策を取得します。
パラメータがたとえば int の場合、これは次のようになります。
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)
これは明らかに仮想と宣言できません(したがって、基本クラスへのポインターから呼び出すことはできません)...
今、私はかなり立ち往生しており、続行する方法がわかりません...