2014-03-18 129 views
0

我有一个依赖于另一个模板类的模板类。 TemplateClassB如何使用TemplateClassA类型TypeA?模板类如何在C++中使用另一个模板类中的类型?

template <int L> 
class TemplateClassA { 
public: 
    typedef unsigned TypeA; 
}; 

template <typename E, typename F> 
class TemplateClassB { 
    TemplateClassA::TypeA var; //error: invalid use of template-name 'TemplateClassA' without an argument list 
}; 

int main(){ 
    TemplateClassA<1> A = TemplateClassA<1>(); 
} 
+0

您需要在'var'的声明中为'TemplateClassA'指定一个模板参数,并使用'typename' – Brian

+0

请称它们为“class templates”。他们是制作课堂的模板,而不是一个有趣的课堂。 –

+0

可能的重复[哪里,为什么我必须把“模板”和“typename”关键字?](http://stackoverflow.com/questions/610245/where-and-why-do-i-have-to -put-the-template-and-typename-keywords) – Constructor

回答

2

布赖恩说,使用

typename TemplateClassA<L>::TypeA var; 

其中L一些int

+0

如果事先不知道L,那么TemplateClassB必须有另一个模板参数L,是否正确? – Pippi

+0

是的,你会有模板 class TemplateClassB { – thisisdog

相关问题