Ich habe ein Problem, das ich nicht wirklich verstehe. Ich habe einen Klassenknoten.C++ Klasse mit Vorlage kann seinen Konstruktor nicht finden
template<class T>
class node {
protected:
T _data;
public:
node(T data);
};
Dies ist in der Datei "node.h". In "node.cpp" Datei, gibt es diesen Konstruktor:
#include "node.h"
template<class T>
node<T>::node (T data) {
_data = data;
}
Während der Compiler keine Fehler findet, der Linker (ld) sagt mir:
/usr/bin/ld: undefinierte Symbole:
Knoten <int> :: node (int)
der komische Teil ... wenn ich den Konstruktor von .cpp in .h-Datei verschiebe, funktioniert alles gut. Wo ist das Problem?
können Sie auch templatized Mitglied Funktionen eines nicht-templatized Klasse in die CPP-Datei setzen, wenn Sie sie nie an anderer Stelle gehen zu nennen (so dies durchzusetzen, sie sollte privat sein, aber sie müssen nicht sein). – rmeador