我想用 C++ 实现一个通用的树结构——用类! - 这棵树由一个键(在我的例子中是一个整数)和一个 leftChild 和 rightChild 属性组成,它们应该与树本身具有相同的类型
在 C 中我可以这样做:
typedef struct avl {
int key;
int bf;
struct avl *leftChild;
struct avl *rightChild;
} AVLTree;
我在我的 C++ 代码中尝试了以下操作:
class MTree {
public:
int key;
int bf;
MTree leftChild;
MTree rightChild;
MTree() {}
~MTree() {};
}
但它不会工作,它会给我以下错误消息:
mtree-ops.cpp:12: 错误:字段“leftChild”的类型不完整
mtree-ops.cpp:13: error:error: 字段‘rightChild’的类型不完整
所以你看,看起来我不能说我的类有一个属于它自己类型的属性,因为这就像试图引用在定义时并不真正存在的东西。如何使用 C++ 类完成此操作?
最佳答案
(我还不能发表评论。)
简而言之,MTree leftChild
将有两个自己的 MTree
child ,每个 child 都有两个 child ,依此类推。因此,MTree
对象将无限大,因为它们将包含无限多个 MTree
实例。
参见 this question这在本质上是相同的。如此处所述,您必须求助于对子项的引用或指针,从而为单个 MTree
对象提供有限大小。例如,
class MTree
{
[...]
public:
MTree* leftChild;
MTree* rightChild;
};
(您可以将 MTree*
替换为 MTree&
。)
关于c++ - 在 C++ 中具有相同类的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17375887/