C++ 错误:在';之前应为非限定id<';令牌(模板编译问题)

C++ 错误:在';之前应为非限定id<';令牌(模板编译问题),c++,templates,compilation,compiler-errors,C++,Templates,Compilation,Compiler Errors,我正在尝试创建自己的模板列表类作为练习。我本来应该从小一点做起,但你看。。我得到的错误是“\u prev->\u next=\u head;//在new\u head旁边设置上一个节点”之前预期的非限定id ++_大小; } 类型定义 void List::PushBack() { _tail=新节点(0,_tail); 如果(!Empty()) _tail->\u next->\u prev=\u tail;//设置旧tail\u prev为新tail ++_大小; } 类型定义 void L

我正在尝试创建自己的模板列表类作为练习。我本来应该从小一点做起,但你看。。我得到的错误是“\u prev->\u next=\u head;//在new\u head旁边设置上一个节点”之前预期的非限定id ++_大小; } 类型定义 void List::PushBack() { _tail=新节点(0,_tail); 如果(!Empty()) _tail->\u next->\u prev=\u tail;//设置旧tail\u prev为新tail ++_大小; } 类型定义 void List::PopBack() { } 类型定义 节点和列表::GetHead() { 返回头; } #endif//define 我还将包括模板节点类hpp,以防它可能会有什么东西抛开

#if !defined _NODE_HPP_
#define _NODE_HPP_


//#include "Sprite.hpp"

template<typename NodeType>
class Node{
   public:
      Node( Node* prev = 0, Node* next = 0);
      void SetData(NodeType newData);
      void GetData();
   private:
      friend class List;

      NodeType _data;
      Node* _next;
      Node* _prev;

};


///implement Node

template <typename NodeType>
Node<NodeType>::Node(Node* prev, Node* next) : _prev(prev), _next(next)
{}
template <typename NodeType>
void Node<NodeType>::SetData(NodeType newData)
{
   _data = newData;
}
template <typename NodeType>
void Node<NodeType>::GetData()
{
   return _data;
}

#endif //define
#如果!已定义(节点)水电站_
#定义_节点_水电站_
//#包括“Sprite.hpp”
模板
类节点{
公众:
节点(节点*prev=0,节点*next=0);
void SetData(节点类型newData);
void GetData();
私人:
好友类列表;
节点类型数据;
节点*\u下一步;
节点*_prev;
};
///实现节点
模板
Node::Node(Node*prev,Node*next):\u prev(prev),\u next(next)
{}
模板
void Node::SetData(NodeType newData)
{
_数据=新数据;
}
模板
void节点::GetData()
{
返回数据;
}
#endif//define

它是
模板
,而不是
类型定义

当我们这样做时,您的预处理器标记是无效的标识符,因为它们以下划线开头,这在这里是不允许的。请使用类似于
LIST\u HPP
的内容

最后,让我们看看您的
Empty
定义:

typedef <typename ListType>
bool <ListType>Empty()
{
   return !_size; //returns true if size = 0
}

它是
模板
,而不是
类型定义

当我们这样做时,您的预处理器标记是无效的标识符,因为它们以下划线开头,这在这里是不允许的。请使用类似于
LIST\u HPP
的内容

最后,让我们看看您的
Empty
定义:

typedef <typename ListType>
bool <ListType>Empty()
{
   return !_size; //returns true if size = 0
}

在一个文件中你使用
模板
,在另一个文件中你使用
模板
…一些失败的替换所有可能?在一个文件中你使用
模板
,在另一个文件中你使用
模板
…一些失败的替换所有可能?哦,天哪,多尴尬啊。好的,我现在已经得到了,谢谢所有关于其余代码的输入!真的很有帮助。会吗进行更正并记住您的评论。我知道在这里询问其他错误可能不合适,但因为您已经阅读了我的代码。我得到了错误:“struct List”所需的模板参数,在Node.hpp中声明我的节点类。有什么想法吗?我认为我对temple有一个合理的理解但是所有的语法都在提醒我。感谢你的帮助!@Holly Hm,从目前的代码来看,不清楚是什么导致了这个错误,特别是在声明
节点时,应该还没有提到
列表
,对吧?最好问一个新问题。哦,天哪,有多尴尬。好吧,我已经现在就开始吧,感谢您对代码其余部分的所有输入!非常有用。将进行更正并记住您的评论。我知道在这里询问其他错误可能不合适,但因为您已经查看了我的代码。我得到了错误:“struct List”所需的模板参数,在我声明我的Node.hpp中的Node类。有什么想法吗?我本以为我对模板有一个合理的理解,但所有的语法都让我跟上了。感谢您的帮助!@Holly Hm,从当前代码来看,可能导致该错误的原因并不明显,特别是在声明
Node
时,不应该提到
List
>然而,对吗?最好问一个新问题。
typedef <typename ListType>
bool <ListType>Empty()
{
   return !_size; //returns true if size = 0
}
template <typename ListType>
bool List<ListType>::Empty()
{
    return _size != 0;
}