递增++运算符在链表中重载



我想通过将current = current->next更改为current++来增加下一个节点,但它不起作用。因此,我尝试使用迭代器类来执行运算符重载。但是有一个错误,我不确定这里发生了什么:

struct node{
int value;
node *next;
}
class Iterator{
public:
Iterator();
Iterator(node *);
Iterator operator++(int);
private:
node *point;
};
Iterator::Iterator(){
point = NULL;
}
Iterator::Iterator(node *current){
point = current;
}
Iterator Iterator::operator++(int u){
point = point->next;
return *this;
}

打印结果就像:

class linkedList{
public:
void print() const;
protected:
node *first;
}
void linkedList::print()const{
node *current = first;
Iterator p = Iterator(current);
while(current != NULL){
cout << current->value << " ";
p++;
}
}

但事实证明有个错误

不能有一个一半使用指针,一半使用迭代器的循环。选择其中一个。例如,使用迭代器

Iterator p = Iterator(current);
while (current != Iterator()){
cout << p->value << " ";
p++;
}

现在这个循环意味着您还必须为迭代器重载operator!=operator->。使operator==operator*过载也是有意义的。

相关内容

  • 没有找到相关文章

最新更新