Ho un problema che non capisco davvero. Ho un nodo di classe.classe C++ con modello non riesce a trovare il suo costruttore
template<class T>
class node {
protected:
T _data;
public:
node(T data);
};
Questo è nel file "node.h". Nel file "node.cpp", c'è questo costruttore:
#include "node.h"
template<class T>
node<T>::node (T data) {
_data = data;
}
Mentre il compilatore non trova alcun errore, il linker (ld) mi dice:
/usr/bin/ld: simboli indefiniti:
nodo <int> :: nodo (int)
la parte strana ... se sposto il costruttore dal file .cpp in .h, tutto funziona correttamente. Dov'è il problema?
Si può anche mettere funzioni membro templatized di una classe non templatized nel file cpp se si è mai andare a chiamarli altrove (in modo da far rispettare questo, dovrebbe essere privato, ma non devono essere). – rmeador