Pregunta

defino una función de plantilla que carga un mapa de un archivo CSV:

template <class T>
bool loadCSV (QString filename, map<T,int> &mapping){
    // function here
}

Entonces trato de usarlo:

map<int, int> bw;
loadCSV<int>((const QString)"mycsv.csv",&bw);

Pero get htis error de compilación tiempo:

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 mi llamada de función está trayendo en algunos argumentos implícitos, pero no entiendo el error y cómo solucionarlo. ¿Alguna idea?

¿Fue útil?

Solución

La caída de la signo, que no quiere pasar un puntero al mapa (nótese el asterisco al final del mensaje de error). También, usted no tiene que convertir explícitamente la cadena literal. Por otra parte, el compilador debe ser capaz de deducir el argumento de plantilla automáticamente.

loadCSV("mycsv.csv", bw);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top