我正在尝试为一个类构建一个模板文件,该类是双向链表的节点。每当我尝试编译时,都会遇到这个错误。
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
答案 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)
{ }