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作为模板参数?
是的,可以通过使用"模板模板参数"来完成.
声明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)
它应该工作正常.