如何将成员函数指针插入到地图中?

时间:2015-11-04 21:28:52

标签: c++ function-pointers

我有这张地图:

std::map<std::string, std::function<void (std::string)>> cMap;

我不太明白如何为它增值?

我试过

  

cMap.insert(std :: make_pair(“test”,&amp; Manager :: testfunc));

  

cMap [“test”] =&amp; Manager :: testfunc;

但是我得到了“未能专门化功能模板”错误。

我不熟悉函数指针,我老老实实地花了小时谷歌搜索和阅读问题和答案,但我找不到任何有用的东西。请帮帮我。

编辑: 目前,Manager :: testfunc只是:

void Manager::testfunc (std::string value) { }

1 个答案:

答案 0 :(得分:2)

为了使成员函数指针可以调用,必须将其绑定到对象。因此,提供了Manager对象(例如,Manager m),您可以使用std::bind绑定成员函数(例如void Manager::foo(std::string const&)),然后将其插入{{1}如下:

std::map

LIVE DEMO