我正在尝试构建一个程序来实施改变行为的政策。我有一个主要的梯度下降类,它采用两个策略,processingPolicy 和 threadingPolicy。然后我有另一个特定的类,它通过奇怪的递归模板模式继承梯度下降类。现在具体的类也使用了不同的策略,其中一个策略也应该改变梯度下降的线程策略。所以我想做以下事情:
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'