【问题标题】:How to get the address of an object within that object's class declaration in C++?如何在 C++ 中对象的类声明中获取对象的地址?
【发布时间】:2020-07-11 01:29:17
【问题描述】:

我正在 C++ 中实现一个双向链表,我正在尝试向节点类添加一个node.append(node2) 方法,它将一个新的节点对象(node2)链接到前一个(节点)。我在node->previous = Node; 线上收到expected primary-expression before ‘;’ token 错误。如何在其类定义中获取对象的地址,以便将其分配给node->previous

class Node {
    public:
        int value;
        Node *next;//points to next node. 
        Node *previous;//doubly linked list.
        void append(Node *node) {
            next = node;
            node->previous = Node;
            node->next = NULL;
        }
};

【问题讨论】:

  • 你真的不想要 node.append(node)。你可能想要 list.append(value)。

标签: c++ data-structures linked-list doubly-linked-list


【解决方案1】:

在 C++ 中使用 this 指针访问对象的地址。将行 node->previous = Node; 更改为 node->previous = this;

【讨论】:

  • 尽管如此,这段代码可以改进很多。如果您仅将其用于一个节点,为什么还要使用附加成员?如果您手动分配节点,为什么要使用双向链表类型?你应该检查周期吗?你会如何解除分配?为什么要包含来自bits/ 的标头?甚至不需要using namespace std :)。这是一个等效示例:Live On coliru
  • @sehe 感谢您的意见。我已经删除了不需要传达问题的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-02-04
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 2018-10-16
  • 2012-05-03
  • 1970-01-01
相关资源
最近更新 更多