C++ 是否从映射传递通用模板参数?

C++ 是否从映射传递通用模板参数?,c++,dictionary,generics,invoke,C++,Dictionary,Generics,Invoke,我是从c#来的,所以请原谅我在问这个问题时可能会出错 我创建了一个映射,其中包含一个字符串和一个方法,用于处理通过字符串调用方法: //MyClass.h void SerializeCustomData(); std::unordered_map<std::string, void(MyClass::*)()> functionMap; MyMethod() { functionMap["SerializeCustomData"] = &MyClass::Seri

我是从c#来的,所以请原谅我在问这个问题时可能会出错

我创建了一个映射,其中包含一个字符串和一个方法,用于处理通过字符串调用方法:

//MyClass.h
void SerializeCustomData();
std::unordered_map<std::string, void(MyClass::*)()> functionMap;

MyMethod() {
    functionMap["SerializeCustomData"] = &MyClass::SerializeCustomData;
};
#包括
#包括
#包括
类MyClass
{
std::无序_图功能图;
公众:
void MyMethod()
{
emplace(“SerializeCustomData”,&MyClass::SerializeCustomData);
}
void CallSerialize()
{
functionMap.at(“SerializeCustomData”)(*此“参数”);
}
void序列化自定义数据(std::string s)
{

std::我能推荐使用
std::function
而不是一般的成员函数指针吗?你是在寻找这些参数的容器吗?我是的,试着使用std::function和std::bind。@mileniumbug谢谢,所以在我的脑海里看起来是这样的:
std::无序的映射函数映射;
你的问题有点奇怪李尔:你打算如何从映射中调用函数?你是绑定到
MyClass
的实例,还是打算在它们上调用函数?@milleniumbug,目前我是如何从映射中调用函数的:
if(functionMap.find(CommandArgument)!=functionMap.end()(this->*(functionMap[CommandArgument])()
我的问题可能不清楚,因为我不知道我打算如何以其他方式调用函数,尤其是使用参数……就像我们这里的鸡蛋交易之前的鸡一样。
SerializeCustomData(std::string);
#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();
}