首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用模板和继承的容器实现

使用模板和继承的容器实现
EN

Stack Overflow用户
提问于 2014-05-01 16:09:23
回答 1查看 57关注 0票数 0

我正在尝试通过继承一个基本的2-3个树容器来实现一个通用的排序树容器

基本树声明如下:

代码语言:javascript
复制
    template<typename T>
    class Node{
    // etc..
    }

    template<typename T>
    class Tree{
    Node* root;
    // etc
   } 

假设我想实现一个整数树,我想我可以像下面这样声明一个类:

代码语言:javascript
复制
class RankedNode : public Node<int>{

// ...
}

class RankedTree : public Tree<int>{
RankedNode root*; // for example

// ...
}

类RankedNode将包括类Node的附加字段,这有助于快速遍历树( O(log )),并且通过使用继承,我将能够防止代码重复。

但是,我不知道如何正确地这样做,任何想法都将不胜感激:)

EN

回答 1

Stack Overflow用户

发布于 2014-05-01 17:24:24

您可以首先在N (节点类型)而不是T (值类型)上将Tree设置为模板:

代码语言:javascript
复制
template<typename T>
class Node{
   // etc..
}

template<typename N>
class Tree{
   N* root;
   // etc
}

这样你就可以写

代码语言:javascript
复制
class RankedNode : public Node<int>{

// ...
}

class RankedTree : public Tree<RankedNode>{
    // RankedNode* root; <- remove this; it is already in Tree<RankedNode>

    // ...
}

并且只添加与基类相比真正新的字段。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23404193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档