正确声明从模板类继承的类

Tho*_*ood 2 c++ inheritance templates

我对如何正确声明从模板类继承的类感到困惑.

基类看起来像这样(不包括不相关的位):

template <class Writer>
class Node
{
    Writer* writer;
    ...
public:
    Node (std::string& root);
...
}
Run Code Online (Sandbox Code Playgroud)

声明和构造此类的继承类的正确方法是什么?我想的是:

template <class Writer>
class IndexNode : public Node
{...}
Run Code Online (Sandbox Code Playgroud)

但是,这样做会给我" expected class-name before '{' token".我已经尝试在继承的类中注释掉模板声明,认为模板声明本身可能是从父类继承的,但这也没有帮助,也尝试过

class IndexNode : template <class Writer> public Node
{...}
Run Code Online (Sandbox Code Playgroud)

,思考可能必须将模板显式附加到基类.我想而不是继续采取正确的组合,我会寻求帮助,并希望了解一些能让我理解其原因的东西.

谢谢!

Luc*_*ore 8

您的派生类也是模板吗?

是:

template <class Writer>
class IndexNode : public Node<Writer>
{
   //...
}
Run Code Online (Sandbox Code Playgroud)

没有:

class IndexNode : public Node<SomeClassThatSpecializezNode>
{
   //...
}
Run Code Online (Sandbox Code Playgroud)