我想通过将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*
过载也是有意义的。