gpt4 book ai didi

c++ - 如何覆盖 operator++ 以返回指针

转载 作者:行者123 更新时间:2023-11-30 03:57:53 25 4
gpt4 key购买 nike

我写了一个链接列表,我试图覆盖++ 运算符。我将链表编写为类对象,将节点编写为包含数据和两个指针(下一个和上一个节点)的结构。每次我在节点指针之后调用++ 运算符时,我都想返回指向下一个节点的指针所以不是写 ptr = ptr->next 我想写 ptr++.

我的标题代码:

class MyLinkedList
{
private:

struct Node
{
double data;
Node *next = NULL;
Node *previous = NULL;

Node& operator ++ ();
}

Node *head;
Node *tail;
}

cpp代码:

MyLinkedList::Node& MyLinkedList::Node::operator ++ ()
{
*this = *next;
return *this;
}

例如

MyLinkedList a;
...
Node *ptr = a.tail;
while (ptr != NULL)
{
ptr++; //ptr = ptr->next;
}

最佳答案

使指针成为一个类:

// This is an example
class NodePtr
{
Node *m_node;
public:
NodePtr() : m_node(nullptr) {}
NodePtr(Node * node) : m_node(node) {}

bool IsNull() const { return m_node == null; }
Node& GetNode() { assert(m_node); return *m_node; }
NodePtr& operator ++ () { assert(m_node); m_node = m_node->next; return *this;}
};

关于c++ - 如何覆盖 operator++ 以返回指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27740407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com