Menu::Menu(map < string, void(*)() > options) :
menuOptions(options)
{}
菜單選項delcaration在Menu.h: 私人: //簡介:地圖字符串(其描述選項)和邏輯函數調用 地圖<串,void(*)()> menuOptions;C++添加類的成員函數到地圖
void Menu::printInvalidEntryErrorMessage() {
cout << INVALID_ENTRY_ERROR_MESSAGE << endl;
}
int Menu::startMenu() {
pair<string, void(*)()> newPair = { "randomString", Menu::printInvalidEntryErrorMessage };
menuOptions.insert(newPair);
}
嘗試插入此菜單類的成員地圖時出現錯誤。試圖編譯代碼時,我得到的錯誤是如下:
構造的任何情況 「的std ::對< _Ty1,_Ty2」> ::對[與_Ty1 =的std :: string,_Ty2 =無效(*)()]」匹配的參數列表
所有我問的是你如何插入一個成員函數到地圖類中?
任何幫助,將不勝感激。謝謝:)
成員函數比'void(*)()'稍微複雜一些,我不能記得pointer-to-member-函數,但你可以嘗試使用'std :: function' –
'Menu :: printInvalidEntryErrorMessage'是一個成員函數。不能用函數指針指向。 [Click](https://isocpp.org/wiki/faq/pointers-to-members) – mpiatek
成員函數指針的語法是:'void(Menu :: *)()' –