我有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>

它应该可以正常工作。

09-07 06:44