Я пытаюсь создать двусвязный список и соответствующий класс узлов, и у меня возникла проблема при попытке добавить типы данных head и tail в мой класс IntDLList.Я не совсем уверен, что я пропустил, но происходит ошибка, утверждающая, что и голова, и хвост не были объявлены, и что мой класс Node не принимает тип.Любая помощь приветствуется!
Редактировать: Это не похоже на дубликат вопроса, я посмотрел на другие ответы, и попытка решить недопустимое использование неполного типа не решило ту же проблему, что и моя ошибка типа имени,
IntDLList
using namespace std;
template <class T>
class IntDLList {
public:
IntDLList() {
head=tail=0; // error: 'head' was not declared in this scope (& same for tail)
}
~IntDLList();
int isEmpty() {
return head==0; // error: 'head' was not declared in this scope
}
void addToDLLHead(const T&);
void addToDLLTail(const T&);
T deleteFromDLLHead();
T deleteFromDLLTail();
void deleteDLLNode(const T&);
bool isInList(const T&) const;
void showList();
private:
IntDLLNode<T> *head, *tail; //error: IntDLLNode does not name a type
};
IntDLLNode
using namespace std;
template<class T>
class IntDLLNode {
friend class IntDLList;
public:
IntDLLNode() {next = prev = 0;}
IntDLLNode(const T& el, IntDLLNode *n = 0, IntDLLNode *p = 0) {
info = el;
next = n;
prev = p;
}
protected:
T info;
IntDLLNode<T> *next,*prev;
private:
};