unorderer_map 中的 c++ 函数 ptr,编译时错误

c++ function ptr in unorderer_map, compile time error

我正在尝试实现一个作为 mapped_type 实现的 unorderer_map,我正在观看一些实现这些的示例,但我无法使其工作。 这是代码:

#include<string>
#include <unordered_map>
namespace Test
{
  class Example
  {
  public:
    Example()
    {
      auto aPair=std::make_pair("one",&Example::procesString);
      map.insert(aPair);
    }
    void procesString(std::string & aString)
    {

    }
    void processStringTwo(std::string & aString)
    {

    }
    typedef void(*fnPtr)(std::string &);
    std::unordered_map<std::string,fnPtr> map;
  };
}

int main()
{
  return 0;
}

我得到这个编译时错误:

error: no matching function for call to 'std::unordered_map, void (*)(std::basic_string&)>::insert(std::pair, void (Test::Example::*)(std::basic_string&)>&)'

谢谢!

函数指针和成员函数指针是两个不同的东西。您要么需要向映射添加一个自由函数,要么需要更改映射以采用成员函数指针。如果你想获取一个成员函数指针,你可以使用这个:

typedef void(Example::*fnPtr)(std::string &);