我正在尝试创建一个表,该表将从常规成员调用常规函数。我正在尝试制作一个热键表,因此当它识别出按下某个键时,它将调用特定对象上的特定函数。
我创建了一个对象(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提供要使用的对象的模板,我遇到了许多语法错误。
任何帮助将不胜感激!谢谢!
由于hotKeyCommand
是一个模板类,因此在声明hotKeyList
时需要提供模板参数:
std::map<unsigned int, hotKeyCommand<float>> hotKeyList;
然后,您可以调用该函数为:
hotKeyList[someKey].commandFunction();
请注意,您的函数不采用任何参数,并且它不是成员函数,因此它无法访问相应的hotKeyList[someKey].objectToCall
成员。