【发布时间】:2020-06-02 15:59:47
【问题描述】:
我很困惑为什么不能以这种方式使用它。有没有办法实现类似这样的函数调用?我很困惑为什么不能这样使用。有没有办法实现类似这样的函数调用?
std::map<std::string, std::function<std::string()>> FUNCS;
void test_map_operator()
{
FUNCS["MD5"] = [](std::string data) { return std::string("MD5 : ") + data; };
FUNCS["CRC32"] = [](std::string data) { return std::string("CRC32 : ") + data; };
FUNCS["RSA"] = [](std::string data, std::string key) { return std::string("RSA : ") + data + key; };
std::cout << FUNCS["MD5"]("hello") << std::endl;
std::cout << FUNCS["CRC32"]("hello") << std::endl;
std::cout << FUNCS["RSA"]("hello","world") << std::endl;
}
【问题讨论】:
-
可能是因为 RSA 的签名与其他两个函数不同?
-
我还看到在类型声明中只有一种类型。也许编译器理解该函数不带参数但返回一个字符串。也许它是一个只接受一个字符串但不返回任何内容的函数。那里有接受 2 个或 1 个字符串参数并返回另一个字符串的函数。一切都一团糟;我也不会编译
-
我会考虑指定参数类型以及 std::function<:string>