重载+运算符以模仿移动到下一个节点

时间:2013-11-10 23:01:22

标签: c++

我想重载+,这样当我有'迭代器'时,我可以使用+代替->next

我的意思是,如果我有类似的东西:

mylist<int>::iterator n = test.begin();
n = n->next;

我想使用n = n + 1转到列表中的下一个元素。

我试图在节点类中重载运算符。

mynode* operator+(size_t n) {
    size_t cnt = 0;
    mynode* count = this;
    while(cnt != n) {
        ++cnt;
        count = count->next;
    }
    return count;
}

在我的列表课程中,我有typedef mynode<T>* iterator

1 个答案:

答案 0 :(得分:4)

  

我认为运营商没有被召集

问题是你的例子中的n是指针(或指针是语义的迭代器),而不是对象。您不能在指针上重载operator +,只能在对象本身上重载。这就是为什么不调用运算符的原因--C ++有指针运算的内置运算符,这是代码运行时应用的运算符。

要解决此问题,您需要提供自己的迭代器对象,这些对象封装了相应的指针。然后,您可以覆盖迭代器上的operator +,根据需要遍历列表,并返回指向正确元素的新迭代器。