【发布时间】:2020-11-13 16:45:11
【问题描述】:
当我尝试运行此代码时,出现此错误:
'Linkedlist' 的构造函数必须显式初始化成员 'point' 没有默认构造函数 链表::链表()
class Node {
public:
Node* next;
Node* prev;
Elem elem;
friend class Linkedlist;
Node(): next(NULL), prev(NULL)
{}
Node(Elem elem) : elem(elem)
{}
};
class Iterator {
private:
Node* iter;
//Iterator(Node curr);
public:
friend class Linkedlist;
Iterator(Node* curr) {
iter=curr;
}
};
class Linkedlist {
private:
Node *head;
Node *tail;
int N;
Iterator point;
public:
Iterator point;
Linkedlist();
};
Linkedlist::Linkedlist() {
N = 0;
head = new Node();
tail = new Node();
head->next = tail;
tail->prev = head;
point.iter = head;
}
我不知道如何解决这个问题,感谢任何帮助!
【问题讨论】:
-
您的
Iterator类应该维护一个Node* currentNode;成员变量,而不是Node iter;。 -
其实有 * 但不知怎么没有出现,所以我编辑了
-
iter仍然是一个令人困惑的名称,而且整个Iterator类定义应该是LinkedList的嵌套类。 -
LinkedList 的构造函数没有构造迭代器点,因此编译器尝试使用不存在的默认构造函数来构造它。要么添加一个,要么显式初始化它。
-
你需要在链表构造函数中添加对点构造函数的调用