模板参数

Aoi*_*asu 2 c++ templates visual-studio-2008 visual-c++

我有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作为模板参数?

Ben*_*oît 5

是的,可以通过使用"模板模板参数"来完成.

声明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
}; 
Run Code Online (Sandbox Code Playgroud)

使用

ClassC<Arg, ClassA, ClassB> 
Run Code Online (Sandbox Code Playgroud)

它应该工作正常.