Question

Je définis une fonction de modèle qui charge une carte à partir d'un fichier CSV:

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

J'essaie ensuite de l'utiliser:

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

Mais get SITS erreur de compilation de temps:

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

Il semble que mon appel de fonction apporte dans certains arguments implicites, mais je ne comprends pas l'erreur et la façon de le corriger. Toutes les idées?

Était-ce utile?

La solution

Laissez tomber l'esperluette, vous ne voulez pas passer un pointeur sur la carte (remarquez l'astérisque à la fin du message d'erreur). En outre, vous ne devez pas jeter explicitement la chaîne littérale. De plus, le compilateur devrait être en mesure de déduire automatiquement l'argument de modèle.

loadCSV("mycsv.csv", bw);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top