我正在尝试通过继承一个基本的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(log )),并且通过使用继承,我将能够防止代码重复。
但是,我不知道如何正确地这样做,任何想法都将不胜感激:)
发布于 2014-05-01 17:24:24
您可以首先在N (节点类型)而不是T (值类型)上将Tree设置为模板:
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>
// ...
}并且只添加与基类相比真正新的字段。
https://stackoverflow.com/questions/23404193
复制相似问题