C ++如何将成员函数分配给函数指针

时间:2019-12-09 03:58:56

标签: c++

 13 class FunctionRegister;
 14 typedef int (FunctionRegister::*FRP)(map<string, string> &);
 15
 16 class FunctionRegister {
 17 public:
 18     // write functions here
 19     static int parseTime(map<string, string> &slots);
 20 public:
 21     static FunctionRegister *getInstance() {
 22         return &_instance;
 23     }
 24     FRP getPatternFunction(const string &pat) {
 25         if (_function_map.find(pat) != _function_map.end()) {
 26             return _function_map[pat];
 27         }
 28
 29         DEBUG_LOG("no function registered for [%s]", pat.c_str());
 30         return NULL;
 31     }
 32 private:
 33     map<string, FRP> _function_map;
 34     static FunctionRegister _instance;
 35 private:
 36     FunctionRegister() {
 37         // register functions here
 38         _function_map["parseTime"] = FunctionRegister::parseTime;
 39     }
 40     ~FunctionRegister() {}
 41 };

编译此代码时出现编译错误。我尝试将FunctionRegister::parseTime更改为&FunctionRegister::parseTime,但遇到相同的错误。

include/function_register.h: In constructor 'Instruction::FunctionRegister::FunctionRegister()':
include/function_register.h:38:36: error: cannot convert 'int(std::map<std::basic_string<char>, std::basic_string<char> >&)' to 'std::map<std::basic_string<char>, int (Instruction::FunctionRegister::*)(std::map<std::basic_string<char>, std::basic_string<char> >&)>::mapped_type {aka int (Instruction::FunctionRegister::*)(std::map<std::basic_string<char>, std::basic_string<char> >&)}' in assignment
         _function_map["parseTime"] = FunctionRegister::parseTime;

0 个答案:

没有答案