我不太熟悉模板及其在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;
};