使用模板和继承的容器实现
Container implementation using templates and inheritance
我试图通过继承一个基本的2-3树容器来实现一个通用的排序树容器
基本树声明如下:
template<typename T>
class Node{
// etc..
}
template<typename T>
class Tree{
Node* root;
// etc
}
假设我想实现一个整数树,我想我可以声明一个类如下:
class RankedNode : public Node<int>{
// ...
}
class RankedTree : public Tree<int>{
RankedNode root*; // for example
// ...
}
RankedNode类将包括Node类的附加字段,这有助于快速遍历树(O(logn((,并且通过使用继承,我将能够防止代码重复。
然而,我不知道如何正确地做到这一点,任何想法都将不胜感激:(
您可以先将Tree
作为N
上的模板(节点类型(,而不是T
(值类型(:
template<typename T>
class Node{
// etc..
}
template<typename N>
class Tree{
N* root;
// etc
}
这样你就可以写
class RankedNode : public Node<int>{
// ...
}
class RankedTree : public Tree<RankedNode>{
// RankedNode* root; <- remove this; it is already in Tree<RankedNode>
// ...
}
并且只添加与基类相比真正新的字段。
相关文章:
- 我应该避免多重实现继承吗
- 尝试使用继承和模板实现CRTP.Visual Studio正在生成编译器错误
- 类继承,ENUM 与 AST 类实现的问题
- C++ 使用接口和默认实现继承
- C++ 多重继承:使用基类 A 的实现实现基类 B 的抽象方法
- 将实现从继承的 CRTP 注入到继承的接口类
- 接口实现和私有继承之间的交互
- C 如何仅实现多个继承类的一个构造函数
- 如何在部分类模板专业化中实现继承
- 从接口和实现C 继承
- 编译器如何实现继承
- 为什么无法使用'using'指令实现继承的纯虚拟方法?
- 在子类中实现继承类的方法(param=指向父级的指针)(param=指向子级的指针)
- 从抽象基类的多个分部实现继承
- C++通过继承函数实现继承的抽象函数
- 如何在C++实现继承并解决错误"parent class is not accessible base of child class"?
- 编译器如何实现C++继承
- 代理dll:方法覆盖/方法转发(COM实现继承)
- 类型a必须实现继承的纯虚拟方法b
- 如何实现继承表单fstream的类