G
Gaijinco
I'm trying to do a template class Node.
My node.hpp is:
#ifndef _NODE_HPP_
#define _NODE_HPP_
namespace com { namespace mnya { namespace carlos {
template <typename T>
class Node
{
private:
T data;
Node* next;
public:
Node(const T& data);
~Node();
void setData(const T& data);
T getData() const;
void setNext(Node<T>* next);
Node<T>* getNext() const;
};
}}}
#endif
My node.cpp is:
#include "node.hpp"
namespace com { namespace mnya { namespace carlos {
template <typename T>
Node<T>::Node(const T& data):data(data){};
template <typename T>
Node<T>::~Node()
{
if(next!=0)
delete next;
}
template <typename T>
void Node<T>::setData(const T& data)
{
this->data = data;
}
template <typename T>
T Node<T>::getData() const
{
return data;
}
template <typename T>
void Node<T>::setNext(Node<T>* next)
{
this->next = next;
}
template <typename T>
Node<T>* Node<T>::getNext() const
{
return next;
}
}}}
When I try to use the class with:
Node<int> n(10);
The compiler says: "[Linker error] undefined reference to
com::mnya::carlos::Node<int>::Node(int const&)"
What am I doing wrong?
Thanks a lot.
My node.hpp is:
#ifndef _NODE_HPP_
#define _NODE_HPP_
namespace com { namespace mnya { namespace carlos {
template <typename T>
class Node
{
private:
T data;
Node* next;
public:
Node(const T& data);
~Node();
void setData(const T& data);
T getData() const;
void setNext(Node<T>* next);
Node<T>* getNext() const;
};
}}}
#endif
My node.cpp is:
#include "node.hpp"
namespace com { namespace mnya { namespace carlos {
template <typename T>
Node<T>::Node(const T& data):data(data){};
template <typename T>
Node<T>::~Node()
{
if(next!=0)
delete next;
}
template <typename T>
void Node<T>::setData(const T& data)
{
this->data = data;
}
template <typename T>
T Node<T>::getData() const
{
return data;
}
template <typename T>
void Node<T>::setNext(Node<T>* next)
{
this->next = next;
}
template <typename T>
Node<T>* Node<T>::getNext() const
{
return next;
}
}}}
When I try to use the class with:
Node<int> n(10);
The compiler says: "[Linker error] undefined reference to
com::mnya::carlos::Node<int>::Node(int const&)"
What am I doing wrong?
Thanks a lot.