マップのアロケータの問題と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);
しかしGET 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