考虑以下代码:
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 ?
{
};
当模板类
Cchild
从嵌套类C::NestedClass
继承时,编译器可以正常编译。但是,如果我想让Cchild
从嵌套模板类C::NestedTemplateClass<P>
继承,它将无法编译我怎样才能做到这一点 ?
最佳答案
语法为:
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
关于c++ - 模板类如何从嵌套模板类继承,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40193224/