0

動作を変更するポリシーを実装するプログラムを構築しようとしています。processingPolicy と threadingPolicy の 2 つのポリシーを取るメインの勾配降下クラスが 1 つあります。次に、奇妙な再帰テンプレート パターンを介して勾配降下クラスを継承する別の特定のクラスがあります。特定のクラスも異なるポリシーを使用するようになりました。これらのポリシーの 1 つは、勾配降下のスレッド化ポリシーも変更する必要があります。だから私は次のことをしたい:

template<class _C, class _TP, class _PP> class GradientDescent: public _TP, public _PP
{
};

template<class _TP> specificImplementation: 
    public _TP, 
    public GradientDescent<specificImplementation<_TP>, _TP::GDTP, _TP::GDPP>{
};

class specificImplementationPolicy1{
typedef GDTP1 GDTP;
typedef GDPP1 GDPP;
};
class specificImplementationPolicy2{
typedef GDTP2 GDTP;
typedef GDPP2 GDPP;
};

理想的には、特定の実装のポリシーが、typedef のポリシー GDTP および GDPP を介して勾配降下のポリシーを決定します。しかし、これを行うと、次のコンパイラ エラーが発生します。

error C2923: 'GradientDescent' : '_TP::GDTP' is not a valid template type argument for parameter '_TP'
4

0 に答える 0