自定义迭代器的运算符 += 无法正常工作

问题描述 投票:0回答:1

对于一个项目,我们的任务是使用迭代器创建一个双向链接列表。对于其中一个问题,我们将向迭代器添加一个数字以跳转到该位置。当我添加到迭代器时,我不断遇到分段错误,我需要帮助找出我做错了什么。

class Iterator
{
public:
    Iterator operator +=(int add)
    {
        if (add > 0)
        {
            for (int i = 0; i < add; ++i)
            {
                cursor_ = cursor_->getNext();
            }
            return *this;
        }
        else
        {
            for (int i = 0; i > add; ++i)
            {
                cursor_ = cursor_->getPrev();
            }
            return *this;
        }
    }
private:
    Node* head_ = nullptr;
    Node* tail_ = nullptr;
    Node* cursor_ = nullptr;
};

int position = 7;
cursor_ += position;

当我添加到cursor_时,出现分段错误

c++ doubly-linked-list
1个回答
0
投票

cursor_有7个getNext元素吗?如果没有,您就有获得 nullptr 节点的风险。另外,如果添加 < 0, you want to do

--i
,而不是
++i

© www.soinside.com 2019 - 2024. All rights reserved.