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

时间:2015-05-29 15:45:43

标签: c++ member-function-pointers

我正在尝试实现一个实现为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;
}

我得到了这个编译时错误:

  

错误:没有匹配函数来调用&#39; std :: unordered_map,void(*)(std :: basic_string&amp;)&gt; :: insert(std :: pair,void(Test :: Example :: *)(标准:: basic_string的&安培;)&GT;&安培;)&#39;

THX!

1 个答案:

答案 0 :(得分:0)

函数指针和成员函数指针是两回事。您需要向地图添加一个自由函数,或者您需要更改地图以取代成员函数指针。如果你想使用一个成员函数指针,你可以使用它:

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