考虑以下代码:

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/

10-13 00:04