Я пытаюсь создать шаблон узла для использования с моим связанным шаблоном списка, но получаю сообщение об ошибке, что мои конструкторы в Node.h не определены. У меня есть файл Node.h и файл Node.tem, который я создал в Visual Studio. Node.h файл выглядит следующим образом:C++ LinkList и шаблон узла Связывание ошибок
#ifndef NODE_H
#define NODE_H
#include <cstdlib>
template <class Type>
class Node
{
public:
Node();
Node(Type indata);
Type data;
Node<Type>* next;
Node<Type>* prev;
};
#include "Node.tem"
#endif
и мой Node.tem файл выглядит следующим образом:
template <class Type>
Node<Type>::Node()
{
next = nullptr;
}
template <class Type>
Node<Type>::Node(Type indata)
{
data = indata;
next = nullptr;
}
После некоторой отладки, это выглядит как проблема возникает в моей функции Alloc в Linked шаблон списка на этот бит кода:
template <class Type>
Node<Type>* LinkList<Type>::alloc(Type indata)
{
Node<Type>* dynamicNode = new Node(indata); //error occurs here
return dynamicNode;
}
ошибки я получаю:
'Node': class has no constructors
и 'Node': use of class template requires template argument list
Вы фактически получаете ошибку компилятора, или это просто исходя из Intellisense? –
@NathanMonteleone Да, я получаю ошибку компилятора. Ошибка компилятора: 'ошибка C2514: 'Node': класс не имеет конструкторов' – kdubs
@ pm100 Не уверен, что он уникален для VS. Если я не включу его в файл заголовка, тогда теоретически .h не сможет «увидеть» .tem-файл. Хотя, похоже, это все равно не видно. – kdubs