Поскольку nodepointer
является шаблоном, вам необходимо также сделать addNode()
его собственным шаблоном (который в любом случае необходим для его параметра element
), чтобы вы могли передать его параметр шаблона параметру шаблона узла указателя, например: :
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;
};