将具有不同参数的函数指针存储在 void 指针向量中。
unordered_map<string, vector<void*> > List;
template <typename T>
void Listen(string Name, function<void(T)> Function)
{
List[Name].push_back(&Function);
}
然后我想调用它们,假设它T
与Fire
用于Listen
.
template <typename T>
void Fire(string Name, T Data)
{
auto Functions = List[Name];
for (auto i = Functions.begin(); i != Functions.end(); ++i)
{
(function<void(T)>)i)(Data);
}
}
但我得到一个编译器错误,内容为error C2064: term does not evaluate to a function taking 1 arguments in file ...\vc\include\xrefwrap 431 1
.
我究竟做错了什么?