我将一个方法传递给一个构造函数,但是当我使用另一个类的方法时,它给了我一个错误。
它目前正在以这种形式工作;
unsigned int pHash(const std::string& str)
{
//method
}
int main()
{
//stuff
HashMap* hm2 = new HashMap(pHash);
//stuff
}
但是,如果我像这样引用另一个头文件的方法;
HashMap* hm2 = new HashMap(&HashFcn::primeHash);
我在运行时收到错误消息,并显示以下消息;
Error 1 error C2100: illegal indirection c:\program files (x86)\microsoft visual studio 11.0\vc\include\xrefwrap 273 1 Project
Error 2 error C2440: 'newline' : cannot convert from 'const std::string *' to 'const HashFcn *' c:\program files (x86)\microsoft visual studio 11.0\vc\include\xrefwrap 273 1 Project
Error 3 error C2647: '.*' : cannot dereference a 'unsigned int (__thiscall HashFcn::* )(const std::string &)' on a 'const std::string' c:\program files (x86)\microsoft visual studio 11.0\vc\include\xrefwrap 273 1 Project
我的 hashmap 构造函数如下所示;
HashMap::HashMap(HashFunction hashFunction)
: hfunc(hashFunction)
其中 hfunc 是方法的 typdef。
我有一个类 HashFcn 它有方法 primeHash
unsigned int primeHash(const std::string&);
这是我第一次做 typdef / 方法传递——任何线索或帮助将不胜感激!