【发布时间】:2017-02-27 14:30:53
【问题描述】:
Menu::Menu( map < string, void(*)() > options) :
menuOptions(options)
{}
Menu.h 中的菜单选项声明: 私人的: // 简介:字符串映射(描述选项)和要调用的链接函数 地图菜单选项;
void Menu::printInvalidEntryErrorMessage() {
cout << INVALID_ENTRY_ERROR_MESSAGE << endl;
}
int Menu::startMenu() {
pair<string, void(*)()> newPair = { "randomString", Menu::printInvalidEntryErrorMessage };
menuOptions.insert(newPair);
}
尝试插入作为菜单类成员的此地图时出错。我在尝试编译代码时遇到的错误如下:
没有构造函数实例“std::pair<_ty1 _ty2>::pair [with _Ty1=std::string, _Ty2=void(*)()]”与参数列表匹配
我要问的是如何将成员函数插入到类中的映射中?
任何帮助将不胜感激。谢谢你:)
【问题讨论】:
-
成员函数比
void(*)()稍微复杂一点,我不记得指向成员函数的语法,但你可以尝试使用std::function -
Menu::printInvalidEntryErrorMessage是一个成员函数。不能被函数指针指向。 Click -
成员函数指针的语法是:
void(Menu::*)() -
@mpiatek 当然你可以为 a (non static) 声明一个函数指针。成员函数。请参阅我上面的评论。
-
@πάνταῥεῖ 我的意思是:不能通过指向常规函数的指针来指向。它需要指向成员函数的指针
标签: c++ insert stdmap std-pair