我正在尝试创建一个将从一般成员调用一般函数的表。我正在尝试创建一个热键表,所以当它识别出某个键被按下时,它将调用特定对象上的特定函数。
我创建了一个对象(hotKeyCommand),它存储一个指向void函数的指针,以及一个模板,指向要调用该函数的对象的指针。然后我有一张如下所示的地图:
//hotKeyCommand.cpp
template<class callObjectPointer> class hotKeyCommand
{
...
typedef void(*hotKeyFunc)();
hotKeyFunc commandFunction;
callObjectPointer objectToCall;
//hotKeyConfig.cpp
std::map<unsigned int, hotKeyCommand> hotKeyList;
我想知道如何与hotKeyList变量进行交互来执行此操作。理想情况下,我只能调用hotKeyList [someID] .execute(),它会将函数执行到相应的对象,但是我遇到了很多语法错误,因为没有给hotKeyList一个模板,可以使用哪些对象。
任何帮助将不胜感激! 谢谢!
答案 0 :(得分:0)
由于hotKeyCommand
是模板类,因此您需要在声明hotKeyList
时提供模板参数:
std::map<unsigned int, hotKeyCommand<float>> hotKeyList;
然后你可以把这个函数称为:
hotKeyList[someKey].commandFunction();
请注意,您的函数不接受任何参数,并且它不是成员函数,因此它无权访问相应的hotKeyList[someKey].objectToCall
成员。