使用C++中的函数名称从字符串调用函数

tic*_*ete 8 c# c++

如何从字符串中调用C++函数?

而不是这样做,直接从字符串调用方法:

void callfunction(const char* callthis, int []params)
{
  if (callthis == "callA")
  {
    callA();
  }
  else if (callthis == "callB")
  {
    callB(params[0], params[1]);
  }
  else if (callthis == "callC")
  {
    callC(params[0]);
  }
}
Run Code Online (Sandbox Code Playgroud)

在C#中我们使用typeof()然后从那里获取方法信息和调用...我们可以在C++中使用什么?

Zan*_*ynx 10

创建一个由字符串和函数指针组成的std :: map.使用您要调用的所有函数创建地图.

还有其他方法可以做到这一点,包括符号表和动态加载器,但这些方式不可移植或友好.


fus*_*har 2

替代方案:您可以使用函数指针数组并使用其索引调用所需的函数。

typedef void (*TFunc)(int, int);

TFunc arrptr[100];

void callFunction(int index, int params[])
{
    (*arrptr[index])(params[0], params[1]);
}
Run Code Online (Sandbox Code Playgroud)