我将一个方法传递给构造函数,但是当我使用另一个类的方法时,它会给我一个错误。
目前正在以此形式工作;
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 /方法传递 - 任何线索或帮助将不胜感激!
答案 0 :(得分:1)
尝试使primeHash静态:
static unsigned int primeHash(const std::string&);