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