Questo mi ha fatto impazzire per l'ultima ora e mezza. So che è una cosa piccola ma non riesco a trovare cosa c'è che non va (il fatto che sia un piovoso venerdì pomeriggio, ovviamente, non aiuta).Errore di riferimento non definito per metodo modello
ho definito la classe seguente che conterrà i parametri di configurazione letti da un file e mi lascia loro l'accesso dal mio programma:
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);
};
in cui il metodo convert()
è definito in VAConfig.cpp
come
template <typename T>
T VAConfig::convert(const std::string& value)
{
T t;
std::istringstream iss(value, std::istringstream::in);
iss >> t;
return t;
}
Tutto abbastanza semplice. Ma quando prova dal mio programma principale utilizzando
int y = parameters->convert<int>("5");
ottengo un errore undefined reference to 'int VAConfig::convert<int>...'
compilazione. Idem per readParameter()
.
Guardato un sacco di tutorial modello, ma non è possibile capirlo. Qualche idea?
Un'ora e mezza non è così male ... mi ha ucciso per 3 ieri. –