我正在创建一个哈希表类,我有两个构造函数(一个不使用哈希函数/它使用我创建的默认值,另一个使用传递的哈希函数)。部分代码如下:
HEADER_FILE
class HashMap
{
public:
typedef std::function<unsigned int(const std::string&)> HashFunction; //
HashMap(HashFunction hashFunction); // These 4 lines are the focus of the question.
HashMap(); //
HashMap(HashFunction hasher); //
~HashMap();
HashMap(const HashMap& hm);
HashMap& operator=(const HashMap& hm);
private:
HashFunction hasher
}
在我的2个构造函数中,我进行了此设置,并收到错误no viable overloaded '=' hasher = default_hasher
:
SOURCE_FILE
unsigned int default_hasher(std::string& k)
{
performs (int) on each character in the string and adds them up.
Returns the total
}
HashMap::HashMap()
{
hasher = default_hasher;
...
}
HashMap::HashMap(HashFunction hasher)
{
hasher = hasher;
...
}
谢谢
答案 0 :(得分:0)
您需要default_hasher
使用const
作为参数,因为HashFunction
已指定。此外,以const-correctness的名义,这是明智之举。