Неопределенная ссылочная ошибка для метода шаблона [дубликат]

This question already has an answer here:

Why can templates only be implemented in the header file? 15 answers

Это сводит меня с ума в течение последних полутора часов. Я знаю, что это мелочь, но не могу найти, что не так (тот факт, что дождливый пятничный полдень, конечно, не помогает).

Я определил следующий класс, который будет хранить параметры конфигурации, прочитанные из файла, и позволит мне получить к ним доступ из моей программы:

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 );
};

где методconvert() определяется вVAConfig.cpp как

template <typename T>
T VAConfig::convert( const std::string& value )
{
    T t;
    std::istringstream iss( value, std::istringstream::in );
    iss >> t;
    return t;
}

Все довольно просто. Но когда я тестирую из моей основной программы, используя

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

Я получаюundefined reference to 'int VAConfig::convert<int>...' ошибка компиляции. То же самое дляreadParameter().

Посмотрел много шаблонных уроков, но не могу понять это. Есть идеи?

Ответы на вопрос(3)

Ваш ответ на вопрос