【发布时间】:2014-05-07 16:32:21
【问题描述】:
我正在尝试在 C++ 中实现优先级队列(作为指针堆)。这可能是也可能不是糟糕的设计,但我为堆中的每个节点创建了一个类 PriorityQueue(它将包含整个堆)和另一个类 Node。它看起来像这样:
class PriorityQueue {
public:
Node* root;
void insert(Node* n) {
n->ancestor = this;
root->insert(n);
}
}
class Node {
public:
PriorityQueue* ancestor;
Node* parent, left, right;
void insert(Node* n) { /* really long insert algorithm */ }
}
这些类相互引用,所以我需要某种原型。我尝试在开头添加class PriorityQueue; 和class Node;,但由于无效使用不完整类型而出现错误。是否可以按照我想要的方式执行此操作,或者我应该完全改变我的设计?
【问题讨论】:
-
您在寻找“friend”吗?
-
将
Node设为内部类。
标签: c++ class heap priority-queue function-prototypes