我正在尝试在C ++中执行链接列表。我有一个单独的list.h文件,其中定义了Node类。我的list.cpp文件包含链接列表的功能定义。头文件和Ifndef文件没有问题。在一些已在list.cpp中定义或初始化节点的指令中,我得到此“ 节点之前的预期类型说明符”错误。示例代码段如下所示:
template <typename T>
void LinkedList<T>::Insert(T element)
{
Node <T> *n= new Node(T element);
}
P.s我对模板类型声明不了解很多。我在该网站上看到了许多此类相关的答案,但是这些错误都无法帮助我。
答案 0 :(得分:1)
我假设以下概述并更正了您想要的代码。但是请注意,从C ++ 11开始,使用原始内置指针被认为是不好的样式,因为它使所谓的内存泄漏变得容易,即使您学习实现std::list
的错误版本也是如此。考虑下面的改进。
template <typename T>
class LinkedList{
struct Node{
Node (T t) {}
};
public:
void Insert(T element);
};
template <typename T>
void LinkedList<T>::Insert(T element)
{
Node *n= new Node(element);
}
现场改善
#include <memory>
struct Node{
Node (T t) {}
std::unique_ptr<Node> next;
};
template <typename T>
void LinkedList<T>::Insert(T element)
{
//If you got a C++>=14 implementation
auto n = std::make_unique<Node>(element);
//If you have to stick to C++11
auto n = std::unique_ptr<Node>{new Node(element)};
}