OIS :: Keys(int)とstd :: functionの配列をしたいです。メンバ関数をstd ::関数にバインドする方法はありますか?
私はこれがあります。
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)
^
何をしましたか?
多分 'のstd ::バインド(&変数UserInput :: selectBazooka(代わりに
std::bind()
の)このようなものです、 &input、std :: placeholders :: _ 1、std :: placeholders :: _ 2) ' –ラムダを使用していない理由はありますか? (それはバインドよりもコードを明確にします) – Borgleader
PiotrSkotnicki thanskはうまくいきます! @Borgleaderラムダはここでどのように役立つのでしょうか? –