我想知道是否有一种方法可以使 map (在 C++ 中)返回一个函数。现在这是我的代码,它不起作用,我收到编译器错误。
#include <map>
#include <iostream>
#include <string>
using namespace std;
map<string, void()> commands;
void method()
{
cout << "IT WORKED!";
}
void Program::Run()
{
commands["a"]();
}
Program::Program()
{
commands["a"] = method;
Run();
}
任何一点建议都会很棒!提前谢谢你。
最佳答案
您不能在映射中存储函数——只能存储指向函数的指针。清理了一些其他次要细节后,您会得到如下内容:
#include <map>
#include <iostream>
#include <string>
std::map<std::string, void(*)()> commands;
void method() {
std::cout << "IT WORKED!";
}
void Run() {
commands["a"]();
}
int main(){
commands["a"] = method;
Run();
}
至少对于 g++ 4.7.1,这会打印 IT WORKED!
,正如您显然想要/期望的那样。
关于C++如何创建一个接受字符串并返回函数的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13022938/