我想创建一个映射,键是函数名作为字符串,值是函数本身。所以像这样的事情......
#include <cmath>
#include <functional>
#include <map>
#include <string>
typedef std::function<double(double)> mathFunc;
int main() {
std::map< std::string, mathFunc > funcMap;
funcMap.insert( std::make_pair( "sqrt", std::sqrt ) );
double sqrt2 = (funcMap.at("sqrt"))(2.0);
return 0;
}
将用于在某些输入值上调用 sqrt 函数。然后,当然您可以将其他函数添加到映射中,例如 sin、cos、tan、acos 等,然后通过一些字符串输入来调用它们。我的问题是映射中的值类型应该是什么,函数指针和 std::function 在 std::make_pair 行都给出以下错误
error: no matching function for call to 'make_pair(const char [5], <unresolved overloaded function type>)'
那么对于像 std::sqrt 这样的内置函数,我的值类型应该是什么?
谢谢