ISO C ++禁止声明" DNode"没有类型

时间:2016-03-21 02:03:33

标签: c++ templates doubly-linked-list

我正在尝试为一个类构建一个模板文件,该类是双向链表的节点。每当我尝试编译时,都会遇到这个错误。

ISO C ++禁止声明" DNode"没有类型

它似乎突然响应我的函数返回DNode指针。我已经在这方面工作了好几天,似乎无法做出正面或反面。

#ifndef DNODE_H
#define DNODE_H
#include <cstdlib>
#include <string>
#include <iostream>
#include <iterator>

template <class T>
class DNode
{
    public:
        DNode(T StartingData = T(), DNode* PrevLink = NULL, DNode* NextLink = NULL)
            {Data = StartingData; previous = PrevLink; next = NextLink;}

        void setData(T item)
            {Data = item;}

        void setNext(DNode *l)
            {next = l;}
        void setPrevious(DNode *l)
            {previous = l;}

        *DNode getPrevious() {return previous;}
        *DNode getNext() {return next;}

        T getData()
            {return Data;}

    private:
        DNode *previous, *next;
        T Data;
};

#endif

1 个答案:

答案 0 :(得分:1)

这只是一个错字:

*DNode getPrevious() {return previous;}
*DNode getNext() {return next;}

应该是:

DNode* getPrevious() {return previous;}
DNode* getNext() {return next;}

除此之外,代码看起来很好。你可能想要使用你的大括号样式,你的一些函数难以阅读,你的构造函数会更好作为mem-initializer列表。另外CapCase通常仅用于类名,因为变量更喜欢camelCase(或snake_case,无论哪个)。所以我会这样编写你的consturctor:

DNode(T startingData = T(), DNode* prevLink = NULL, DNode* nextLink = NULL)
    : data(startingData)
    , previous(prevLink)
    , next(nextLink)
{ }