Frage

Ich definiere eine Template-Funktion, die eine Karte aus einer CSV-Datei lädt:

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

ich dann versuchen, es zu verwenden:

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

Aber get htis Zeitfehler kompilieren:

error: no matching function for call to 
‘loadCSV(const QString, std::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > >*)’

Es scheint, mein Funktionsaufruf wird in einigen impliziten Argumenten zu bringen, aber ich verstehe nicht den Fehler und wie man es beheben. Irgendwelche Ideen?

War es hilfreich?

Lösung

Lassen Sie das Ampersand, Sie nicht wollen, einen Zeiger auf die Karte zu übergeben (man beachte den Stern am Ende der Fehlermeldung). Auch Sie müssen nicht explizit den Stringliteral gegossen. Darüber hinaus sollte der Compiler in der Lage sein, automatisch das Template-Argument abzuleiten.

loadCSV("mycsv.csv", bw);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top