我正在尝试为一个类构建一个模板文件,这个类是一个双向链表的节点。每当我尝试编译时,我都会遇到这个错误。
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发布于 2016-03-21 10:15:45
这只是一个打字错误:
*DNode getPrevious() {return previous;}
*DNode getNext() {return next;}应该是:
DNode* getPrevious() {return previous;}
DNode* getNext() {return next;}除此之外,代码看起来还不错。你可能想要处理你的花括号样式,你的一些函数很难读懂,你的构造函数作为mem初始化器列表会更好。此外,CapCase通常仅用于类名,对于变量,最好使用camelCase (或snake_case,取其中之一)。所以我会这样写你的构造器:
DNode(T startingData = T(), DNode* prevLink = NULL, DNode* nextLink = NULL)
: data(startingData)
, previous(prevLink)
, next(nextLink)
{ }https://stackoverflow.com/questions/36122039
复制相似问题