以字符串形式给出的名称调用函数

Paw*_*las 2 c++ function

在c ++中是否有可能调用在另一个函数中作为字符串arg给出的名称的函数.例如:

void func1()
{
// do something
}

void func2()
{
// do something
}

int main()
{
    call("func1");
    call("func2");
}
Run Code Online (Sandbox Code Playgroud)

P0W*_*P0W 7

您可以创建一个std::mapstd::functionC++ 11

  std::map<std::string, std::function<void()> > call;

  call["func1"] = func1 ;
  call["func2"] = func2 ;
Run Code Online (Sandbox Code Playgroud)

然后,

  call["func1"]( ) ;
Run Code Online (Sandbox Code Playgroud)