Cela a été me rend fou de la dernière heure et demi. Je sais que c'est une petite chose, mais impossible de trouver quel est le problème (le fait que c'est une saison des pluies de vendredi après-midi, bien sûr, n'aide pas).
J'ai défini la classe suivante qui va contenir les paramètres de configuration de lire un fichier et me permettra d'y accéder à partir 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 en 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 à partir de mon programme principal à l'aide de
int y = parameters->convert<int>("5");
Je reçois un undefined reference to 'int VAConfig::convert<int>...'
d'erreur de compilation. Idem pour readParameter()
.
Regardé beaucoup de modèle de tutoriels mais coul pas à comprendre cela. Des idées?