template C ++ com problema mapa alocador
Pergunta
Eu defino uma função de modelo que carrega um mapa de um arquivo CSV:
template <class T>
bool loadCSV (QString filename, map<T,int> &mapping){
// function here
}
Eu, então, tentar usá-lo:
map<int, int> bw;
loadCSV<int>((const QString)"mycsv.csv",&bw);
Mas get htis compilação erro de tempo:
error: no matching function for call to
‘loadCSV(const QString, std::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > >*)’
Parece que a minha chamada de função é trazer alguns argumentos implícitos, mas eu não entendo o erro e como corrigi-lo. Alguma idéia?
Solução
Drop the comercial, você não quer passar um ponteiro para o mapa (note o asterisco no final da mensagem de erro). Além disso, você não tem que converter explicitamente o literal string. Além disso, o compilador deve ser capaz de deduzir o argumento de modelo automaticamente.
loadCSV("mycsv.csv", bw);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow