gpt4 book ai didi

c++ 将 std::function 从另一个类传递给构造函数

转载 作者:行者123 更新时间:2023-11-28 07:53:27 26 4
gpt4 key购买 nike

我正在将一个方法传递给构造函数,但是当我使用另一个类的方法时,它给了我一个错误。

目前正在以这种形式工作;

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 是方法的类型定义。

我有一个 HashFcn 类,它有 primeHash 方法

unsigned int primeHash(const std::string&);

这是我第一次进行 typdef/方法传递——任何线索或帮助将不胜感激!

最佳答案

尝试使 primeHash 静态化:

  static unsigned int primeHash(const std::string&);

关于c++ 将 std::function 从另一个类传递给构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13244520/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com