我有ClassA<ARG_TYPE>
和ClassB<ARG_TYPE>
。现在,我想使用ClassC
,它具有常见的ARG_TYPE
并提到了类作为模板参数。ClassC<ARG_TYPE, ClassA<ARG_TYPE>, ClassB<ARG_TYPE>>
很简单。
但是是否可以声明ClassC<ARG_TYPE, ClassA, ClassB>
,以便A和B类都知道使用ARG_TYPE作为其模板参数?
最佳答案
是的,可以通过使用“模板模板参数”来完成。
声明ClassC如下:
template<typename Arg,
template<typename T_Arg> class T_ClassA,
template<typename T_Arg> class T_ClassB>
class ClassC
{
typedef T_ClassA<Arg> MyClassA;
typedef T_ClassB<Arg> MyClassB;
// Use MyClassA and MyClassB
};
使用
ClassC<Arg, ClassA, ClassB>
它应该可以正常工作。