模板类如何从嵌套模板类继承

时间:2016-10-22 14:21:17

标签: c++ templates nested

请考虑以下代码:

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>

,则无法编译

我该怎么做?

1 个答案:

答案 0 :(得分: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