gpt4 book ai didi

c++ - 如何在 C++ 中创建 map 并能够搜索函数并调用它?

转载 作者:IT老高 更新时间:2023-10-28 21:41:55 26 4
gpt4 key购买 nike

我正在尝试在 C++ 中创建字符串和方法的映射,但我不知道该怎么做。我想做这样的事情(伪代码):

map<string, method> mapping =
{
"sin", Math::sinFunc,
"cos", Math::cosFunc,
...
};

...

string &function;
handler = mapping.find(function);
int result;

if (handler != NULL)
result = (int) handler(20);

老实说,我不知道在 C++ 中是否可行。我想要一个字符串、方法的映射,并且能够在我的映射中搜索函数。如果存在给定的函数字符串名称,那么我想用给定的参数调用它。

最佳答案

好吧,我不是这里流行的 Boost Lovers Club 的成员,所以就这样吧 - 使用原始 C++。

#include <map>
#include <string>

struct Math
{
double sinFunc(double x) { return 0.33; };
double cosFunc(double x) { return 0.66; };
};

typedef double (Math::*math_method_t)(double);
typedef std::map<std::string, math_method_t> math_func_map_t;

int main()
{

math_func_map_t mapping;
mapping["sin"] = &Math::sinFunc;
mapping["cos"] = &Math::cosFunc;

std::string function = std::string("sin");
math_func_map_t::iterator x = mapping.find(function);
int result = 0;

if (x != mapping.end()) {
Math m;
result = (m.*(x->second))(20);
}
}

如果我正确理解你想要一个方法指针,而不是函数/静态方法指针,那显然是这样。

关于c++ - 如何在 C++ 中创建 map<string, class::method> 并能够搜索函数并调用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3113139/

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