我来自c#所以请原谅我在试图提出这个问题时可能出错的事。
我创建了一个包含字符串的地图和一个处理字符串调用方法的方法:
//MyClass.h
void SerializeCustomData();
std::unordered_map<std::string, void(MyClass::*)()> functionMap;
MyMethod() {
functionMap["SerializeCustomData"] = &MyClass::SerializeCustomData;
};
我的问题是;如何让我的地图采用该方法的参数? c ++中的泛型类型还是字符串?
示例:的
SerializeCustomData(std::string);
答案 0 :(得分:0)
#include <functional>
#include <iostream>
#include <unordered_map>
class MyClass
{
std::unordered_map<std::string, std::function<void(MyClass&, std::string)>> functionMap;
public:
void MyMethod()
{
functionMap.emplace("SerializeCustomData", &MyClass::SerializeCustomData);
}
void CallSerialize()
{
functionMap.at("SerializeCustomData")(*this, "argument");
}
void SerializeCustomData(std::string s)
{
std::cout << "hello: " << s << "\n";
}
};
int main()
{
MyClass c;
c.MyMethod();
c.CallSerialize();
}
这里使用MyClass&
参数和字符串调用map中的函数。请注意,MyClass
未绑定到回调,因此我们明确地传递它。