gpt4 book ai didi

c++ - 如何在 C++ 中创建 map

转载 作者:太空宇宙 更新时间:2023-11-04 13:23:06 26 4
gpt4 key购买 nike

我正在尝试使用回调在 C++ 中创建字符串和方法的映射,这样我就可以在映射中搜索函数并调用它。我是通过以下方式做到的。问题是我有不同类型和参数的方法,我不知道如何定义回调和映射。该方法适用于 int add(int, int) 和 int subtract(int, int),但如何为方法字符串 helloworld() 定义回调?谁能帮我?谢谢!

typedef int(*Callback)(int, int); //for add and subtract
QMap<QString, Callback> functionTable;

main{

registerCallback("add", add);
registerCallback("subtract", subtract);

int result = 0;
if (functionTable.contains(add))
{
Callback callback = functionTable[add];
result = callback(1, 2);
return QString::number(result) ;

}
else
{
return "methodNotFound";
}

}

int add(int a, int b)
{
return a + b;
}

int subtract(int a, int b)
{
return a - b;
}

String helloWorld()
{
return "hello world";
}
void registerCallback(QString methodname, Callback callback)
{
functionTable[methodname] = callback;
}

最佳答案

如果您的编译器支持 C++11 标准(几乎肯定支持),您可以使用 std::function来自 <functional> header 。由于这个现代 C++ 功能在最新的 MS Office 版本中被广泛使用(根据 MSVC++ Dev 博客),这应该工作得非常顺利。在 GNU C++ 编译器中,它为每个调用添加了两条 CPU 指令。

关于c++ - 如何在 C++ 中创建 map<string, class::method>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34334518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com