Ошибка C2955 ( ссылка ) связана с отсутствием списка аргументов типа для типов, которым он требуется.В вашем коде вы ссылаетесь на тип Node
, который на самом деле является шаблоном и требует списка аргументов типа.Ниже приведены исправления:
Прежде всего, в DoubleLinkedList.h
в объявлении LinkedList
(в разделе private:
вверху):
static Node * head;
static Node * tail;
должно быть (они также не должны быть объявлены static
, так как я почти уверен, что каждому отдельному связанному списку требуется своя голова и хвост):
Node<T> * head;
Node<T> * tail;
, поскольку Node
на самом деле является шаблоном класса Node<T>
и требуетсам параметр типа.
Аналогично в DoubleLinkedList.cpp
в методе push
:
Node * newN = new Node;
должно быть:
Node<T> * newN = new Node<T>;
по той же причине.
Кроме того, определения шаблонов должны быть определены в заголовочных файлах и заголовочных файлах, включенных с использованием #include
, например, #include "DoubleLinkedList.h"
, (и не скомпилированы, как вы бы .cpp
файлов), начиная с расширения шаблона для получения конкретных версийзанятия выполняются препроцессором.Наконец, в вашем определении LinkedList<T>::push
также есть проблема с newN->pushMe;
: такого метода не существует.Исправьте эти проблемы, и есть вероятность, что он может скомпилироваться!Кроме того, я не ручаюсь за правильность кода.