gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:46:19 24 4
gpt4 key购买 nike

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

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

最佳答案

这只是一个错字:

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

应该是:

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

除此之外,代码看起来还不错。你可能想要处理你的大括号样式,你的一些函数很难阅读,你的构造函数作为内存初始化列表会更好。此外,CapCase 通常仅用于类名,因为变量更喜欢 camelCase(或 snake_case,以两者为准)。所以我会这样写你的构造函数:

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

关于c++ - ISO C++ 禁止声明没有类型的 "DNode",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36122039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com