私は HashMap と呼ばれる次のクラスを持っています。これは、1 つのコンストラクターがユーザーが提供したものを受け入れることができ、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;
...
}