好的,我有一个类LinkedList,它有一个嵌套类LinkedListIterator。在LinkedListIterator的方法中,我引用了LinkedList的私有字段。我认为这是合法的。但是我得到了错误:
from this location
每次我引用它们。
我在封闭类的字段中收到相应的错误消息:
invalid use of non-static data member 'LinkedList<int>::tail'
知道为什么吗?相关代码如下:
template<class T>
class LinkedList {
private:
//Data Fields-----------------//
/*
* The head of the list, sentinel node, empty.
*/
Node<T>* head;
/*
* The tail end of the list, sentinel node, empty.
*/
Node<T>* tail;
/*
* Number of elements in the LinkedList.
*/
int size;
class LinkedListIterator: public Iterator<T> {
bool add(T element) {
//If the iterator is not pointing at the tail node.
if(current != tail) {
Node<T>* newNode = new Node<T>(element);
current->join(newNode->join(current->split()));
//Move current to the newly inserted node so that
//on the next call to next() the node after the
//newly inserted one becomes the current target of
//the iterator.
current = current->next;
size++;
return true;
}
return false;
}
答案 0 :(得分:2)
你不能只使用那样的非static
成员。我认为以下示例将清除问题:
LinkedList<int>::LinkedListIterator it;
it.add(1);
current
和tail
在方法中会是什么?没有LinkedList
的实例可言,所以这些成员甚至还不存在。
我不是说让成员static
,这是错误的,但重新考虑你的方法。
了解std
迭代器是如何的。