2016-10-22 92 views
2

考虑下面的代码继承:如何模板类从嵌套的模板类

template<class C, class P> 
//class Cchild : public C::NestedClass    // Works 
class Cchild : public C::NestedTemplateClass<P>  // Fails : how to inherit from nested template class defined in C ? 
{ 
}; 

编译器编译罚款时,嵌套类C::NestedClass模板类Cchild继承。但是,如果我想Cchild从嵌套模板类继承C::NestedTemplateClass<P>

我怎么能做到这一点?

回答

3

的语法是:

template<class C, class P> 
class Cchild : public C::template NestedTemplateClass<P> 
{ 
}; 

从GCC错误消息实际上是相当的可读性:

t.C:3:26: error: non-template ‘NestedTemplateClass’ used as template 
class Cchild : public C::NestedTemplateClass<P> 
          ^~~~~~~~~~~~~~~~~~~ 
t.C:3:26: note: use ‘C::template NestedTemplateClass’ to indicate that it is a template 
+0

我虽然尝试过这种语法,但显然不是。是的,如果我使用'gcc'而不是'vc',我可能会在错误信息中得到答案。感谢Sam。 – shrike