Cela me rend fou depuis une heure et demie. Je sais que c'est une petite chose mais ne peux pas trouver ce qui ne va pas (le fait que c'est un vendredi après-midi pluvieux, bien sûr, n'aide pas).Erreur de référence non définie pour la méthode de gabarit
J'ai défini les paramètres classe suivante qui configuration tiendra lecture d'un fichier et me permettra d'y accéder de mon programme:
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);
};
où la méthode convert()
est définie dans VAConfig.cpp
comme
template <typename T>
T VAConfig::convert(const std::string& value)
{
T t;
std::istringstream iss(value, std::istringstream::in);
iss >> t;
return t;
}
Tout à fait simple. Mais quand je test de mon programme principal à l'aide
int y = parameters->convert<int>("5");
Je reçois une erreur de compilation undefined reference to 'int VAConfig::convert<int>...'
. Idem pour readParameter()
.
A regardé beaucoup de tutoriels de modèle, mais je ne peux pas comprendre cela. Des idées?
Une heure et demie, c'est pas si mal ... ça m'a tué pour 3 hier. –