Итак, у меня есть класс LinkedList с вложенным классом LinkedListIterator. В методах LinkedListIterator я ссылаюсь на частные поля LinkedList. Который я считал законным. Но я получаю ошибку:C++ - Использование элементов класса из вложенного класса?
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;
}
При задании вопросов, связанных с ошибками компиляции или компоновщика, он помогает размещать _all_ сообщений об ошибках как можно полнее. То есть просто скопируйте их в стенографию в вопрос. –
См. Здесь http://stackoverflow.com/questions/486099/can-inner-classes-access-private-variables – jogojapan
@jogojapan совершенно другой вопрос, но ответ показывает, что внутренний класс имеет ссылку на экземпляр внешнего класса, что является способом решения этой проблемы. –