我写了一个链表,我试图覆盖++运算符。
我将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;
}
答案 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;}
};