«Голова» и «Хвост» не были объявлены в этой области - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь создать двусвязный список и соответствующий класс узлов, и у меня возникла проблема при попытке добавить типы данных 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:

};
...