c++ - 从模板类继承的类的正确声明

标签 c++ templates inheritance

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

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

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

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

template <class Writer>
class IndexNode : public Node
{...}

但是,这样做会给我“'{' 标记前的预期类名”。我试过把继承类中的模板声明注释掉,想着也许模板声明本身是继承自父类的,但也没用,也试过了

class IndexNode : template <class Writer> public Node
{...}

,认为模板可能必须显式附加到基类。我想与其继续尝试正确的组合,不如寻求帮助,希望能学到一些能让我理解其中原因的东西。

谢谢!

最佳答案

你的派生类也是模板吗?

是:

template <class Writer>
class IndexNode : public Node<Writer>
{
   //...
}

否:

class IndexNode : public Node<SomeClassThatSpecializezNode>
{
   //...
}

关于c++ - 从模板类继承的类的正确声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9890084/

相关文章:

c++ - 指定所有内置成员的零初始化的构造函数?

c++ - 从迭代器转换为定义的类型?

c++ - 从源代码编译与 deb 包编译

templates - 如何用两组数据修复golang嵌套模板

c++ - 关于 C++ 中模板上重载运算符的一些编译器错误

java - 扩展 JFrame 总是一个坏主意吗?

c++ - 当行被独立处理时,如何并行化从输入文件中读取行?

c# - 如何从外部程序集运行测试

javascript - 如何检查子类是否覆盖了父类的方法/函数?

用于类型和非类型模板的 c++ auto