gpt4 book ai didi

c++ - 另一个奇怪的编译器错误 : calling a templated function which gives undefined referenes

转载 作者:行者123 更新时间:2023-11-28 03:41:31 24 4
gpt4 key购买 nike

<分区>

到目前为止,还不错。但是,出现了一些问题。

首先也是最重要的是,当我调用以下内容时:

const bool bppExists = CheckMapForExistingEntry< std::string, int >( mConfigValues, "bpp" );

我得到以下信息:

error: undefined reference to `bool CheckMapForExistingEntry<std::string, int>(std::map<std::string, int, std::less<std::string>, std::allocator<std::pair<std::string const, int> > > const&, std::string const&)'

还有其他三个实例说明了这种情况。该函数如下所示:

声明

template < class Key, class Value >
bool CheckMapForExistingEntry( const std::map< Key, Value >& map, const std::string& key );

定义

template < class Key, class Value >
bool CheckMapForExistingEntry( const std::map< Key, Value >& map, const std::string& key )
{

typename std::map< Key, Value >::iterator it = map.lower_bound( key );

bool keyExists = ( it != map.end && !( map.key_comp() ( key, it->first ) ) );

if ( keyExists )
{
return true;
}

return false;
}

那么,这里发生了什么?我包含了包含函数声明的头文件,但它仍然不起作用。根据this ,我应该省略模板参数的值并只传递 key_type,但是它也无法正常工作。

例如:

CheckMapForExistingEntry< std::string >( someMap, "somekey" ); //error

24 4 0