我目前正在从 C# 转到 C++ 并重写一些游戏引擎代码,我想我在 tr1 的墙上;本质上,我想要做的是让输入层从触摸屏获取输入,然后触发回调以通知任何侦听该输入的元素。现在 tr1/boost 似乎通过使用function和bind使这变得超级简单,但是触发 void() 回调没有问题,但现在我试图在调用时将参数发送到这些回调(例如枚举) .
这里的问题是,当我调用 bind 并插入参数时,它不会充当占位符,而是充当要传递的永久值。例如我的代码在这里:
包含类:
tr1::function<void (MenuActions action)> callback;
callback = tr1::bind(&MenuScene::handleInputCallback, this, MenuActions::neutral);
m_menuUILayer->registerCallback(callback);
我的意图是创建一个函数并绑定它,然后registerCallback将此回调传递给成员类并存储引用。这部分有效,但现在在成员类中我可以调用回调,但是总是发送默认参数......
会员等级:
if (m_callback)
{
m_callback(MenuActions::backgroundTouchDown);
}
因此,这里没有将 MenuActions::backgroundTouchDown发送到回调中的主包含类,而是仍在使用默认的MenuActions::neutral 。我想知道我是否错过了什么,或者我睡眠不足只是让我走错了路?多谢你们!