类中的指针可以指向这个吗?

Posted

技术标签:

【中文标题】类中的指针可以指向这个吗?【英文标题】:Can a pointer inside a class point to this? 【发布时间】: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”是否可以指向这个? 【参考方案1】:

This 根据定义是指向对象自身的对象的引用/指针。 没有什么禁止您将该参考值保存到其他东西中

【讨论】:

以上是关于类中的指针可以指向这个吗?的主要内容,如果未能解决你的问题,请参考以下文章

C++中怎么获取类的成员函数的函数指针

指向指针问题的指针

在基类中存储指向派生类函数的指针

Cython 中的这个声明是啥? cdef PyObject **工人。它是指向指针的指针吗?

C++类体系中this指针不能改变指向吗?

指向基点的指针可以指向派生对象的数组吗?