【发布时间】:2021-01-11 08:25:27
【问题描述】:
如果我想要这样的课程:
struct NodeLvl1 {
NodeLvl1* parent;
};
一切正常,因为 NodeLvl1 指向另一个,依此类推。但如果我想制作它的高级版本:
struct NodeLvl2 : NodeLvl1 {//Also have a NodeLvl1*
int extra_value;
};
问题是 NodeLvl2 类中的父级有一个指向 NodeLvl1 的指针,而不是我想要的 NodeLvl2 的指针。你最好的解决方法是什么?我在考虑BaseNode 或使用模板。有没有办法做到这一点?
【问题讨论】:
-
您可能正在寻找CRTP pattern。你想用这个数据结构做什么呢?如果没有更多的上下文,很难在这里给出好的建议。
-
Thoes 用于二叉堆和搜索二叉树,但这实际上是一个很好的模式。谢谢。
标签: c++ class pointers inheritance