我目前正在从C#转到C++并重写一些游戏引擎代码,我想我在墙上用tr1;基本上我想要做的是让输入层从触摸屏获取输入,然后发起回调以通知任何监听该输入的元素。现在tr1/boost似乎通过使用函数和绑定,但是发射void()是没有问题的回调,但现在我试图发送参数通过这些回调时调用(举例来说)。如何使用tr1函数并通过更改参数绑定函数?
这里的问题是,当我调用绑定,并插入参数时,它不充当占位符,而是充当要传递的永久值。例如我的代码在这里:
包含类:
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仍在使用中。我想知道我是否错过了一些东西,或者我的睡眠不足只是让我走错了路?多谢你们!
正确的语法是'功能<无效( MenuActions)>',而不是'function'。 –
Nawaz
2013-03-11 06:46:47
'MenuScene :: handleInputCallback'的签名是什么? – juanchopanza 2013-03-11 06:57:36
@juanchopanza sig是** void handleInputCallback(MenuActions action)** – JedH 2013-03-11 07:21:30