Das hat mich in den letzten anderthalb Stunden verrückt gemacht. Ich weiß, es ist eine kleine Sache, aber ich kann nicht herausfinden, was falsch ist (die Tatsache, dass es an einem regnerischen Freitagnachmittag ist, hilft natürlich nicht).Undefinierter Referenzfehler für Template-Methode
Ich habe die folgende Klasse definiert, die aus einer Datei lesen Konfigurationsparameter halten und wird es mir von meinem Programm zugreifen können:
class VAConfig {
friend std::ostream& operator<<(std::ostream& lhs, const VAConfig& rhs);
private:
VAConfig();
static std::string configFilename;
static VAConfig* pConfigInstance;
static TiXmlDocument* pXmlDoc;
std::map<std::string, std::string> valueHash;
public:
static VAConfig* getInstance();
static void setConfigFileName(std::string& filename) { configFilename = filename; }
virtual ~VAConfig();
void readParameterSet(std::string parameterGroupName);
template<typename T> T readParameter(const std::string parameterName);
template<typename T> T convert(const std::string& value);
};
, wo die Methode convert()
in VAConfig.cpp
als
template <typename T>
T VAConfig::convert(const std::string& value)
{
T t;
std::istringstream iss(value, std::istringstream::in);
iss >> t;
return t;
}
Alles ganz einfach. Aber wenn ich von meinem Hauptprogramm teste mit
int y = parameters->convert<int>("5");
Ich erhalte ein undefined reference to 'int VAConfig::convert<int>...'
Übersetzungsfehler. Dito für readParameter()
.
Sah sich viele Vorlagen Tutorials aber konnte nicht herausfinden, dies aus. Irgendwelche Ideen?
Eineinhalb Stunden ist nicht so schlimm ... es hat mich gestern um 3 getötet. –