Ошибка LNK2019 ссылка на неразрешенный внешний символ "public: __cdecl listik::listik(void)
Данная ошибка появляется когда я пытаюсь сделать класс шаблонным, если убрать шаблонность, то все работает нормально, экземпляры создаются и функции работают. Ошибка появляется для каждой вызываемой функции класса.
файл с main функцией
#include <iostream>
#include "listik.h"
int main()
{
system("chcp 1251>nul");
srand(10);
listik<int> firstlist;
for (size_t i = 0; i < 10; i++)
{
firstlist.push_forward(rand() % 10);
}
firstlist.push_back(20);
firstlist.push_forward(20);
firstlist.show_all();
return 0;
}
h файл
#pragma once
#include <iostream>
template <class T>
class listik
{
public:
listik();
~listik();
class Node
{
public:
Node(T data);
~Node();
Node* next=nullptr;
T data=NULL;
};
void push_forward(T data);
void pull_forward();
void push_back(T data);
void pull_back();
void show_all();
Node* begin=nullptr;
Node* end=nullptr;
int count=0;
};
cpp файл, объявление некоторых функций, приложил не все для экономии места
#include "listik.h"
template<class T>
listik<T>::listik()
{
}
template<class T>
listik<T>::~listik()
{
while (begin != nullptr)
{
pull_forward();
--count;
}
}
template<class T>
void listik<T>::push_forward(T data)
{
Node* node = new Node(data);
if (!count)
{
begin = node;
end = node;
}
else
{
node->next = begin;
begin = node;
}
++count;
}
template<class T>
void listik<T>::pull_forward()
{
if (count)
{
Node* ptr = begin;
begin = begin->next;
delete ptr;
}
--count;
}