【发布时间】:2017-02-11 16:35:04
【问题描述】:
我正在实现一个最小堆,它具有保存子级之间最大键的额外属性。 我有一个 Node 类,如果 Node 是一片叶子,我希望它指向自己。 比如:
class Node
{
public:
void update max()
{
if ((left==NULL)&&(right==NULL))
max=this;
}
private:
Key* key;
Value* val;
Node* left;
Node* right;
Node* max;
}
原因是现在它指向 NULL,这让我在比较键之前检查 max 是否为 NULL 的次数太多。 我还应该提到我正在使用所有这些指针,因为 Key 和 Value 是纯虚拟的,并且 Node 有一个我将使用的派生类。 无论如何..是否有可能有一个指向这个的成员变量?
【问题讨论】:
-
“有可能有一个成员变量指向这个吗?” 你为什么认为不可能?听起来你在问XY问题。请澄清您的实际问题。
-
你试过编译运行吗?
-
max是一个指针。this是一个指针。你也不想当指针吗? -
@ABusyProgrammer 我有太多内存泄漏,所以它无法运行。
-
@πάνταῥεῖ 我试图了解类中的变量指向类本身是否合法。如果我创建一个Node的实例A,实例A的成员“max”是否可以指向这个?