书架分支是分支
Is a book shelf branch a branch?
本文关键字:分支 更新时间:2023-10-16
我正在构建一个包含 3 个类的树结构,Node
、Leaf
和 Branch
类。
-
Node
是树节点的抽象类。 -
Leaf
来源于不能生孩子的Node
。 -
Branch
派生自Node
,它可以有孩子并有一个方法add(Node*)
我有像Book
这样的具体类,这是一个Leaf
,BookShelf
是一个Branch
。但是,如果BookShelf
是Branch
,我会加倍,因为当Node*
不是一本书时,add(Node*)
方法无效。因此,Branch
接口不适用于BookShelf
。如何处理这些事情?
如果您尝试将BookShelf::add()
限制为库项目,则需要使用泛型(也称为模板(。 您还需要定义一个抽象类LibraryItem
来翻译Node
的概念。
-
Branch
应该是类型T
上的模板(用于定义成员列表和add
的参数( -
LibraryItem
源于Node
-
Book
源于Leaf
和LibraryItem
-
BookShelf
源于Branch<LibraryItem>
和LibraryItem
不可能
用继承很好地建模集合是发明模板的主要动机之一。
class Book {
// ...
};
typedef std::vector<Book> book_shelf;
做。
相关文章:
- IPC使用多个管道和分支进程来运行Python程序
- 如何删除peer if else分支中的冗长句子
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- 如何正确地将分支添加到已存在的树中
- 如何将分支添加到已存在的TTree:ROOT
- 如何删除 LLVM 中的不规则分支?
- 如果以下行不包含决策或分支,GDB 无法单步跳过函数
- 函数指针与条件分支
- 分支未在 Linux 上采用
- 如何删除分支因子不一致的树,最大为 30,40
- std::shared_ptr vs std::make_shared:意外的缓存未命中和分支预测
- 更改 git 分支名称后,在项目的 Visual Studio 代码中丢失智能感知(建议,转到定义C++
- 条件分支评估
- 是否可以使用函数指针数组来删除分支
- 基于派生类型的编译时行为分支
- L 系统树无法正确分支
- Antlr4 C++访问模棱两可的分支
- 如何为不同的分支使用不同的 Xcode 版本(或具有不同 Clang 版本的最新 Xcode)?
- 如何防止特定的QTreeView分支被拖动?
- 图问题:找出两个节点是否在每个节点的O(1)时间和O(2)存储中共享同一分支