Possible Duplicate:
Why can templates only be implemented in the header file?
Undefined reference to function template when used with string (GCC)
C++ templates, undefined reference
I feel I'm missing something linking a C++ project. I'm not sure if the problem is in the header sources or includes so I made a minimal code sample to demonstrate it.
Main module minmain.cpp:
 #include <stdio.h>
 #include <vector>
 #include <string>
 #include "nodemin.h"
 using namespace std;
 int main()
 {
     // Blist libs are included
     Node<int>* ndNew = ndNew->Root(2);
     return 0;
 }
Header file nodemin.h:
 #ifndef NODETEMP_H_
 #define NODETEMP_H_
 using namespace std;
 template<class T>
 class Node
 {
 protected:
    Node* m_ndFather;
    vector<Node*> m_vecSons;
    T m_Content;
    Node(Node* ndFather, T Content);
 public:
     // Creates a node to serve as a root
         static  Node<T>* Root(T RootTitle);
 };
 #endif
node module nodemin.cpp:
 #include <iostream>
 #include <string.h>
 #include <vector>
 #include "nodemin.h"
 using namespace std;
 template <class T>
 Node<T>::Node(Node* ndFather, T Content)
 {
    this->m_ndFather = ndFather;
    this->m_Content = Content;
 }
 template <class T>
 Node<T>* Node<T>::Root(T RootTitle) { return(new Node(0, RootTitle)); }
Compile line:
 #g++ -Wall -g mainmin.cpp nodemin.cpp
Output:
 /tmp/ccMI0eNd.o: In function `main':
 /home/******/projects/.../src/Node/mainmin.cpp:11: undefined reference to`Node<int>::Root(int)'
 collect2: error: ld returned 1 exit status
I tried compiling into objects but the linking still failed.
 
     
    