c++:我正在使用template创建一个别名声明,并且不断出现错误



我不太熟悉模板及其在C++中的限制。我正在使用模板创建一个通用链表,并有一个模板别名。我不断收到使用别名创建的函数的错误消息。我当前的代码如下:

template <typename var>
struct Node
{
var value;
Node *next;
Node *prev;
};
template <typename var>
using nodepointer = Node<var>*;
void addNode(nodepointer &head, nodepointer &tail, var element);

我得到的错误是:

错误:变量或字段"addNode"声明为无效void addNode(nodepointer&head,nodepointer&tail,var元素(;错误:标记"&"之前缺少模板参数void addNode(nodepointer&head,nodepointer&tail,var元素(

由于nodepointer是一个模板,您需要使addNode()也成为它自己的模板(无论如何,它的element参数都需要它(,这样您就可以将它的模板参数传递给nodepointer的模板参数,例如:

template <typename var>
void addNode(nodepointer<var> &head, nodepointer<var> &tail, var element);

单个template不能像您尝试的那样应用于多个事物,除非它们是类/结构的成员,并且template作为一个整体应用于整个类/结构,例如:

template <typename var>
struct List
{
struct Node
{
var value;
Node *next;
Node *prev;
};
using nodepointer = Node*;
void addNode(var element);
private:
nodepointer head, tail;
};

最新更新