Я довольно новичок в C++ и в попытке создать связанный список я столкнулся с ошибкой, которую я не понимаю.Доступ к указателю вложенного класса
код:
template <typename T>
class List{
class Node{
T data;
Node<T> *next;
Node<T> *previous;
Node<T>(T& data,const Node<T> *next,const Node<T> *previous): data(data),
next(next),previous(previous){
};
};
Node<T> *head;
Node<T> *tail;
int size;
public:
class Iterator{
Node<T> *node;
List<T> *list;
};
void List<T>::remove(List<T>::Iterator& It){
if(It.list!=this){ // FIELD list COULD NOT BE RESOLVED
throw NON_MATCHING_LIST();
}
if(size==0 || It.node=tail){ //FIELD node COULD NOT BE RESOLVED
throw ELEMENT_NOT_FOUND();
}
It.node->previous=It.node->next; //FIELD node COULD NOT BE RESOLVED (and naturally the rest).
It.node->next->previous=It.node->previous
}
};
в моей функции удалить, я пытаюсь удалить элемент из списка, который пришел прямо перед итератора, увы, я получаю сообщение об ошибке говорящее
узел/список полей не могут быть решены
Я пробовал передавать итератор как тип Iterator & или Iterator, ни сработали.
Пойду за отзыв.
Не уверен, что это единственная проблема, но вам нужны некоторые 'typename's, например:' typename List :: Iterator' –
'Node' не является шаблоном класса. Просто скажите 'Node', а не' Node '. 'List' - это шаблон, поэтому скажите' List :: Node'. –
это действительно решено, спасибо. Энди, если вы ответите, я отвечу. – Thongurf