異なるパラメーターを持つ関数ポインターを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
。
私は何が間違っているのですか?