我有以下类,称为 HashMap,它的一个构造函数可以接受用户提供HashFunction
的——然后是我实现的那个。
我面临的问题是HashFunction
在没有提供时定义我自己的问题。以下是我正在使用并从 gcc 获取错误的示例代码:
HashMap.cpp:20:20: error: reference to non-static member function must be called
hashCompress = hashCompressFunction;
^~~~~~~~~~~~~~~~~~~~`
头文件:
class HashMap
{
public:
typedef std::function<unsigned int(const std::string&)> HashFunction;
HashMap();
HashMap(HashFunction hashFunction);
...
private:
unsigned int hashCompressFunction(const std::string& s);
HashFunction hashCompress;
}
源文件:
unsigned int HashMap::hashCompressFunction(const std::string& s)
{
... my ultra cool hash ...
return some_unsigned_int;
}
HashMap::HashMap()
{
...
hashCompress = hashCompressFunction;
...
}
HashMap::HashMap(HashFunction hf)
{
...
hashCompress = hf;
...
}