Вопрос

Я определяю функцию шаблона, которая загружает карту из файла 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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top