Я пишу обобщенный список для моего класса структур данных, и я думаю, что у меня проблема с пользовательскими шаблонами. У меня есть этот кодОшибка в общем классе узлов класса
ListNode.h
#ifndef LISTNODE_H
#define LISTNODE_H
#include <iostream>
using std::ostream;
template <class Datatype>
class ListNode
{
public:
ListNode(Datatype data);
ListNode<Datatype>* next() const;
void next(ListNode* next);
ListNode<Datatype>* previous() const;
void previous(ListNode* previous);
Datatype data() const;
void data(Datatype data);
void write(ostream& out) const;
private:
ListNode<Datatype>* m_next;
ListNode<Datatype>* m_previous;
Datatype m_data;
};
template <class Datatype>
ostream& operator << (ostream& out, const ListNode<Datatype>& node);
#endif /* LISTNODE_H */
ListNode.cpp
#include <iostream>
using std::ostream;
#include "include/List/ListNode.h"
template <class Datatype>
ListNode<Datatype>::ListNode(Datatype data)
{
m_data = data;
m_previous = 0;
m_next = 0;
}
template <class Datatype>
ListNode<Datatype>* ListNode<Datatype>::next() const
{
return m_next;
}
template <class Datatype>
void ListNode<Datatype>::next(ListNode<Datatype>* next)
{
m_next = next;
}
template <class Datatype>
ListNode<Datatype>* ListNode<Datatype>::previous() const
{
return m_previous;
}
template <class Datatype>
void ListNode<Datatype>::previous(ListNode<Datatype>* previous)
{
m_previous = previous;
}
template <class Datatype>
Datatype ListNode<Datatype>::data() const
{
return m_data;
}
template <class Datatype>
void ListNode<Datatype>::data(Datatype data)
{
m_data = data;
}
template <class Datatype>
void ListNode<Datatype>::write(ostream& out) const
{
out << m_data;
}
template <class Datatype>
ostream& operator << (ostream& out, const ListNode<Datatype>& node)
{
node.write(out);
return out;
}
main.cpp
#include <iostream>
using std::cout;
using std::endl;
#include "include/List/ListNode.h"
int main(int argc, char** argv)
{
ListNode<int> node(10);
cout << node;
return 0;
}
Так что, когда я пытаюсь скомпилировать, что я получаю:
main.cpp: 9: undefined refe Renče в `ListNode :: ListNode (INT) '
main.cpp:. 9 :(текст + 0x21): Вынос усекается: R_X86_64_PC32 против неопределенного символа` ListNode :: ListNode (INT)'
Я был бы признателен, если бы кто-нибудь мог сказать мне, что я делаю неправильно