C ++: я использую шаблон для создания объявления псевдонима и продолжаю получать ошибки - PullRequest
0 голосов
/ 08 апреля 2020

Я не слишком знаком с шаблоном и его ограничениями в C ++. Я создаю обобщенный 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);

Я получаю следующие ошибки:

error: variable or field 'addNode' declared void
     void addNode(nodepointer &head, nodepointer &tail, var element);

error: missing template arguments before '&' token
     void addNode(nodepointer &head, nodepointer &tail, var element);

1 Ответ

0 голосов
/ 08 апреля 2020

Поскольку 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;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...