从模板类继承的类的正确声明
Proper Declaration of Classes Inherited from Template Class
我对如何正确声明从模板类继承的类有点困惑。
基类看起来是这样的(不包括不相关的位):
template <class Writer>
class Node
{
Writer* writer;
...
public:
Node (std::string& root);
...
}
声明和构造this的继承类的正确方法是什么?我想的是:
template <class Writer>
class IndexNode : public Node
{...}
然而,这样做给了我"expected class-name before '{' token
"。我试着在继承类中注释掉模板声明,认为模板声明本身可能是从父级继承的,但这也没有帮助,还尝试了
class IndexNode : template <class Writer> public Node
{...}
,认为模板可能必须显式地附加到基类。我想,与其继续尝试正确的组合,我宁愿寻求帮助,希望能学到一些东西,让我理解为什么。
谢谢!
您的派生类也是一个模板吗?
是:
template <class Writer>
class IndexNode : public Node<Writer>
{
//...
}
否:
class IndexNode : public Node<SomeClassThatSpecializezNode>
{
//...
}
您需要实例化正确的基类类型,如下所示。
template<class Writer>
class IndexNode: public Node<Writer>
{
};
这取决于情况。如果您继承的类使用SpecificWriter类,您将执行
class IndexNode : public Node<SpecificWriter>
{
};
如果您继承的类也应该模板化,请执行
template <typename Writer>
class IndexNode : public Node<Writer>
{
};
写入
template<class Writer>
class IndexNode : public Node<Writer>
如果Writer
应该是IndexNode的模板参数。
写入
class IndexNode : public Node<Writer>
如果CCD_ 3是已知类。
相关文章:
- 从具有默认值的部分指定模板类继承时发生SWIG错误,具有不带默认值的正向声明
- 如何在QT Creator上将QWidget声明为继承类的对象
- 为什么C++需要公共继承,忽略朋友声明,才能使动态向下工作?
- 从抽象类继承以创建另一个抽象类时,我应该重新声明所有虚函数吗?
- 在使用受保护和继承时无法访问在类中声明的私有成员
- C++ 声明继承的构造函数?
- C++具有继承列表的模板声明
- 如何对继承的文件使用前向声明
- 抽象类 A 由类 C 继承"through"类 B "intermediary"。如何声明虚拟功能?
- 有什么理由在没有继承的情况下声明一个虚拟方法
- 具有继承的未声明标识符(运算符 ostream)
- 为什么使用声明不会继承移动构造函数
- 带有递归继承和使用声明的Variadic模板
- 带有智能指针和继承的构造函数的前向声明
- 声明从C 中的其他类模板继承的类模板
- 错误 - 根据 G++ 未声明的继承类字段
- C++ 嵌套前向声明继承
- C++类声明(继承)
- 声明继承的模板化对象并将它们推回矢量 - 优雅的方式
- 声明继承为final的类