2014-03-18 126 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

相關問題