我有来自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&)'
我完全不明白。
有人能告诉我为什么这是抱怨吗?我缺少什么模板知识?我已经尝试了对返回并发送到 exists_in() 的变量的各种转换操作,包括 std::string("fred")。没有任何帮助。有些只是产生了更多无意义的错误。