如何将成员函数绑定到std :: function?

迪米特里·达尼洛夫(Dimitri Danilov)

我想做一个OIS :: Keys(int)和std :: function数组。

我有这个 :

struct UserCommands
{
  OIS::KeyCode key;
  std::function<bool(Worms *, const Ogre::FrameEvent& evt)> func;
};

UserInput input;

UserCommands usrCommands[] =
{
  {
    OIS::KC_A, std::bind(&input, &UserInput::selectBazooka)
  },
};

但是当我尝试编译这个时,我有这个编译错误:

    In file included from includes/WormsApp.hh:5:0,
                     /src/main.cpp:2:
/includes/InputListener.hh:26:25: error: could not convert ‘std::bind(_Func&&, _BoundArgs&& ...) [with _Func = UserInput*; _BoundArgs = {bool (UserInput::*)(Worms*, const Ogre::FrameEvent&)}; typename std::_Bind_helper<std::__is_socketlike<_Func>::value, _Func, _BoundArgs ...>::type = std::_Bind<UserInput*(bool (UserInput::*)(Worms*, const Ogre::FrameEvent&))>](&UserInput::selectBazooka)’ from ‘std::_Bind_helper<false, UserInput*, bool (UserInput::*)(Worms*, const Ogre::FrameEvent&)>::type {aka std::_Bind<UserInput*(bool (UserInput::*)(Worms*, const Ogre::FrameEvent&))>}’ to ‘std::function<bool(Worms*, const Ogre::FrameEvent&)>’
         OIS::KC_A, std::bind(&input, &UserInput::selectBazooka)
                             ^

我做错了什么?

皮特·斯科特尼克(Piotr Skotnicki)

的第一个参数std::bind是可调用对象。就您而言,应为&UserInput::selectBazooka之后,与对该成员函数(&input的调用相关联的对象将消失(您颠倒了此顺序)。尽管如此,您仍必须对缺少的参数使用占位符:

std::bind(&UserInput::selectBazooka, &input, std::placeholders::_1, std::placeholders::_2)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将成员函数绑定到std :: function?

来自分类Dev

如何将成员函数指针传递给std :: function

来自分类Dev

如何检查std :: function是否绑定到特定对象的成员函数?

来自分类Dev

将成员函数和 lambda 传递给 std::function

来自分类Dev

当对象绑定到成员函数时,为什么std :: function会调用析构函数?

来自分类Dev

当对象绑定到成员函数时,为什么std :: function会调用析构函数?

来自分类Dev

std :: function到可变参数成员函数,然后绑定可变参数模板参数

来自分类Dev

将常规函数绑定到std :: function

来自分类Dev

如何将成员变量绑定到 JSON?- 安卓

来自分类Dev

如何使用boost :: bind将静态成员函数绑定到boost :: function

来自分类Dev

如何使用boost :: bind将静态成员函数绑定到boost :: function

来自分类Dev

如何将stl队列推送功能绑定到std :: function?

来自分类Dev

std :: bind将成员函数绑定到nullptr的实例,导致此指针看似随机

来自分类Dev

比较成员函数的std :: function

来自分类Dev

在C ++中将成员函数绑定到对象实例的函数

来自分类Dev

如何用成员函数初始化`std :: function`?

来自分类Dev

如何在std :: function中存储虚拟成员函数?

来自分类Dev

std :: function如何使指向成员函数的指针起作用?

来自分类Dev

如何使用成员函数初始化`std :: function`?

来自分类Dev

如何在C ++ 14中将成员函数绑定到对象

来自分类Dev

如何使用boost :: bind将成员函数绑定到ANY对象

来自分类Dev

C ++在初始化std :: function时如何将占位符绑定到reference / ref参数?

来自分类Dev

将成员函数绑定到局部静态变量

来自分类Dev

std ::成员函数上的is_function吗?

来自分类Dev

对成员函数使用std :: function

来自分类Dev

std :: function到对象的成员函数和对象的生存期

来自分类Dev

如何将成员函数指针插入映射?

来自分类Dev

等价于 lambda 的标准绑定用于将成员函数绑定到标准函数

来自分类Dev

我如何将非静态类成员std :: bind绑定到Win32回调函数WNDPROC?

Related 相关文章

  1. 1

    如何将成员函数绑定到std :: function?

  2. 2

    如何将成员函数指针传递给std :: function

  3. 3

    如何检查std :: function是否绑定到特定对象的成员函数?

  4. 4

    将成员函数和 lambda 传递给 std::function

  5. 5

    当对象绑定到成员函数时,为什么std :: function会调用析构函数?

  6. 6

    当对象绑定到成员函数时,为什么std :: function会调用析构函数?

  7. 7

    std :: function到可变参数成员函数,然后绑定可变参数模板参数

  8. 8

    将常规函数绑定到std :: function

  9. 9

    如何将成员变量绑定到 JSON?- 安卓

  10. 10

    如何使用boost :: bind将静态成员函数绑定到boost :: function

  11. 11

    如何使用boost :: bind将静态成员函数绑定到boost :: function

  12. 12

    如何将stl队列推送功能绑定到std :: function?

  13. 13

    std :: bind将成员函数绑定到nullptr的实例,导致此指针看似随机

  14. 14

    比较成员函数的std :: function

  15. 15

    在C ++中将成员函数绑定到对象实例的函数

  16. 16

    如何用成员函数初始化`std :: function`?

  17. 17

    如何在std :: function中存储虚拟成员函数?

  18. 18

    std :: function如何使指向成员函数的指针起作用?

  19. 19

    如何使用成员函数初始化`std :: function`?

  20. 20

    如何在C ++ 14中将成员函数绑定到对象

  21. 21

    如何使用boost :: bind将成员函数绑定到ANY对象

  22. 22

    C ++在初始化std :: function时如何将占位符绑定到reference / ref参数?

  23. 23

    将成员函数绑定到局部静态变量

  24. 24

    std ::成员函数上的is_function吗?

  25. 25

    对成员函数使用std :: function

  26. 26

    std :: function到对象的成员函数和对象的生存期

  27. 27

    如何将成员函数指针插入映射?

  28. 28

    等价于 lambda 的标准绑定用于将成员函数绑定到标准函数

  29. 29

    我如何将非静态类成员std :: bind绑定到Win32回调函数WNDPROC?

热门标签

归档