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

时间:2015-01-02 10:06:47

标签: c++ pointers operator-overloading

我写了一个链表,我试图覆盖++运算符。 我将Linked列表编写为类对象,将节点编写为包含数据和两个指针(下一个和上一个节点)的结构。 每次我在节点指针后调用++运算符我想返回指向下一个的指针 所以我没有写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;
}

e.g

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

1 个答案:

答案 0 :(得分:2)

使指针成为一个类:

// 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;}
};