C ++中的“类之前的预期类型说明符”错误

时间:2018-10-20 15:15:46

标签: c++ templates data-structures linked-list

我正在尝试在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我对模板类型声明不了解很多。我在该网站上看到了许多此类相关的答案,但是这些错误都无法帮助我。

1 个答案:

答案 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)};
}