创建具有不同成员的'Call Function'表



我正在尝试创建一个表,该表将从常规成员调用常规函数。我正在尝试制作一个热键表,因此当它识别出按下某个键时,它将调用特定对象上的特定函数。

我创建了一个对象(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成员。

最新更新