C ++将默认哈希函数分配给成员变量

时间:2014-11-23 05:35:23

标签: c++ hash variable-assignment member

我正在创建一个哈希表类,我有两个构造函数(一个不使用哈希函数/它使用我创建的默认值,另一个使用传递的哈希函数)。部分代码如下:

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;
  ...
}  

谢谢

1 个答案:

答案 0 :(得分:0)

您需要default_hasher使用const作为参数,因为HashFunction已指定。此外,以const-correctness的名义,这是明智之举。