Шаблон C++ с проблемой распределителя карт
Вопрос
Я определяю функцию шаблона, которая загружает карту из файла CSV:
template <class T>
bool loadCSV (QString filename, map<T,int> &mapping){
// function here
}
Затем я пытаюсь использовать его:
map<int, int> bw;
loadCSV<int>((const QString)"mycsv.csv",&bw);
Но получите ошибку времени компиляции htis:
error: no matching function for call to
‘loadCSV(const QString, std::map<int, int, std::less<int>, std::allocator<std::pair<const int, int> > >*)’
Кажется, мой вызов функции приводит к некоторым неявным аргументам, но я не понимаю, в чем ошибка и как ее исправить.Есть идеи?
Решение
Отбросьте амперсанд, вы не хотите передавать указатель на карту (обратите внимание на звездочку в конце сообщения об ошибке).Кроме того, вам не нужно явно приводить строковый литерал.Более того, компилятор должен иметь возможность автоматически выводить аргумент шаблона.
loadCSV("mycsv.csv", bw);
Не связан с StackOverflow