【发布时间】:2015-01-02 10:06:47
【问题描述】:
我写了一个链接列表,我试图覆盖 ++ 运算符。
我将链接列表编写为类对象,将节点编写为包含数据和两个指针(下一个和上一个节点)的结构。
每次我在节点指针之后调用 ++ 运算符时,我都想返回一个指向下一个的指针
所以我不想写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;
}
【问题讨论】:
-
我认为您不能覆盖
++以获得指针。目前您正在为Node而不是Node*覆盖它。ptr++已经有了明确的含义——它的意思是ptr = ptr + 1;。 -
您可能想编写自己的迭代器类,它的作用类似于指针,但不是。然后你可以定义
NodeIterator::operator ++。
标签: c++ pointers operator-overloading