私はstackoverflowの質問からこのコードを持っています:
template <typename K, typename V>
bool exists_in(std::map<K,V> const& haystack, K const& needle)
{
return haystack.find(needle) != haystack.end();
}
テンプレートの新しいユーザーである私は、ここで何が起こっているのかを今でも理解しています。ただ、当てはまらないようです。
私は定義しました
class Varinfo; // meta information about vars
std::map<std::string,VarInfo*> g_varMap; // a map between var names and meta-info
私のメインのC++コードには、次のステートメントがあります。
// various other uses of g_varMap that don't cause errors then
if ( exists_in( g_VarMap, "fred" ) )
このエラーが発生します。
undefined reference to `bool exists_in<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
VarInfo*>(std::map<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, VarInfo*, std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > const, VarInfo*> > > const&, std::basic_string<char,
std::char_traits<char>, std::allocator<char> > const&)'
私は完全に理解していません。
なぜこれが不平を言っているのか誰かに教えてもらえますか?テンプレートに関する知識が不足していますか?std :: string( "fred")を含むexists_in()によって返され、送信される変数に対してさまざまなキャスト操作を試しました。何も役に立たなかった。さらに意味のないエラーを生成したものもあります。