首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ISO C++禁止声明没有类型的"DNode“

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

Stack Overflow用户
提问于 2016-03-21 10:03:33
回答 1查看 579关注 0票数 0

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

ISO C++禁止对没有类型的"DNode“进行解释

它似乎是在响应我返回DNode指针的函数时突然出现的。我已经在这上面工作了几天了,似乎对此一无所知。

代码语言:javascript
复制
#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
EN

回答 1

Stack Overflow用户

发布于 2016-03-21 10:15:45

这只是一个打字错误:

代码语言:javascript
复制
*DNode getPrevious() {return previous;}
*DNode getNext() {return next;}

应该是:

代码语言:javascript
复制
DNode* getPrevious() {return previous;}
DNode* getNext() {return next;}

除此之外,代码看起来还不错。你可能想要处理你的花括号样式,你的一些函数很难读懂,你的构造函数作为mem初始化器列表会更好。此外,CapCase通常仅用于类名,对于变量,最好使用camelCase (或snake_case,取其中之一)。所以我会这样写你的构造器:

代码语言:javascript
复制
DNode(T startingData = T(), DNode* prevLink = NULL, DNode* nextLink = NULL)
    : data(startingData)
    , previous(prevLink)
    , next(nextLink)
{ }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36122039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档