Undefinierter Referenzfehler für Vorlagenmethode [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Warum können Vorlagen nur in der Header-Datei implementiert werden? 15 Antworten

Das hat mich in den letzten anderthalb Stunden verrückt gemacht. Ich weiß, es ist eine kleine Sache, kann aber nicht herausfinden, was nicht stimmt (die Tatsache, dass es ein regnerischer Freitagnachmittag ist, hilft natürlich nicht weiter).

Ich habe die folgende Klasse definiert, die Konfigurationsparameter enthält, die aus einer Datei gelesen wurden, und auf die ich über mein Programm zugreifen kann:

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 Methodeconvert() ist definiert inVAConfig.cpp wie

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 aus teste mit

int y = parameters->convert<int>("5");

Ich bekomme eineundefined reference to 'int VAConfig::convert<int>...' Kompilierungsfehler. Das Gleiche gilt fürreadParameter().

Wir haben uns viele Vorlagen-Tutorials angesehen, konnten dies aber nicht herausfinden. Irgendwelche Ideen?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage