Я пытаюсь создать список. Моя проблема возникает, когда я пытаюсь добраться до поля "узел" внутри класса "Итератор".
#include <iostream>
using namespace std;
template<typename T>
class List{
class Node;
Node* head;
Node* first;
int size;
public:
class Iterator;
List(): head(new Node), first(new Node), size(0){};
void insertFirst(T& element);
void insertFirst(T element);
int getSize();
Iterator& begin();
};
template<class T>
class Iterator{
friend class List<T>;
typename List<T>::Node* node;
List<T>* list;
public:
Iterator(List<T> src):node(NULL), list(&src){}
};
template<class T>
typename List<T>::Iterator& List<T>::begin(){
Iterator it(*this);
it.node=first; <--- ***right here***
return it;
}
Я получаю "Узел" Поле "не может быть разрешен".
Я не знаю, что случилось с моим кодом.
Я буду очень благодарен, если кто-нибудь сможет помочь.
Тип typename List<T>::Iterator
объявлен, но не определен. Вы определили совершенно отдельный тип с несколько похожим именем. Вы, вероятно, хотели написать
template <typename T>
class List<T>::Iterator {
// ...
};
class List<T>::Iterator { … };
,Iterator<T> it(*this);