创建包含不同成员的“呼叫功能”表

时间:2017-05-19 00:32:38

标签: c++ function pointers function-pointers stdmap

我正在尝试创建一个将从一般成员调用一般函数的表。我正在尝试创建一个热键表,所以当它识别出某个键被按下时,它将调用特定对象上的特定函数。

我创建了一个对象(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一个模板,可以使用哪些对象。

任何帮助将不胜感激! 谢谢!

1 个答案:

答案 0 :(得分:0)

由于hotKeyCommand是模板类,因此您需要在声明hotKeyList时提供模板参数:

std::map<unsigned int, hotKeyCommand<float>> hotKeyList;

然后你可以把这个函数称为:

hotKeyList[someKey].commandFunction();

请注意,您的函数不接受任何参数,并且它不是成员函数,因此它无权访问相应的hotKeyList[someKey].objectToCall成员。