我正在尝试实现一个实现为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!
答案 0 :(得分:0)
函数指针和成员函数指针是两回事。您需要向地图添加一个自由函数,或者您需要更改地图以取代成员函数指针。如果你想使用一个成员函数指针,你可以使用它:
typedef void(Example::*fnPtr)(std::string &);