【问题标题】:Create a 'Call Function' Table with Different Members创建具有不同成员的“调用函数”表
【发布时间】:2017-05-19 00:32:38
【问题描述】:

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

我创建了一个对象 (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 提供要使用的对象的模板,我遇到了很多语法错误。

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

【问题讨论】:

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


    【解决方案1】:

    由于hotKeyCommand是一个模板类,所以在声明hotKeyList时需要提供模板参数:

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

    然后你可以调用函数为:

    hotKeyList[someKey].commandFunction();
    

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

    【讨论】:

      猜你喜欢
      • 2021-02-06
      • 1970-01-01
      • 2011-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多