我如何使用tr1函数和绑定函数的变化参数
How do I use tr1 function and bind for functions with changing parameters?
我目前正在从c#转向c++,并重写一些游戏引擎代码,我认为我在tr1的墙上;本质上我想做的是让一个输入层从触摸屏获取输入然后触发一个回调去通知任何监听那个输入的元素。现在tr1/boost似乎使这个超级容易通过使用函数和绑定,但是触发回调是无效的()没有问题,但现在我试图发送参数通过这些回调调用时(例如枚举)。
这里的问题是,当我调用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仍然被使用。我在想,是我错过了什么,还是我睡眠不足让我走上了错误的道路?谢谢你们了!
你应该使用占位符
callback = tr1::bind(&MenuScene::handleInputCallback, this,
tr1::placeholders::_1);
,然后调用
if (m_callback)
{
m_callback(MenuActions::backgroundTouchDown);
}
和你的函数handleInputCallback
可以有默认参数,默认为MenuActions::neutral
相关文章:
- 为什么向量内部的指针在从函数返回时会发生变化?
- 我正在将一个 std::string 传递给一个 boost 函数,该函数对该类型进行常量引用,但该值发生了变化
- 为什么使用默认构造函数"{}"而不是"= default"存在性能变化?
- 当对象传递给成员函数时,成员函数的行为会发生变化?
- C 变化函数语法
- 派生类中函数参数变化的虚函数按常量类型在"function parameter"会破坏虚拟机制吗?
- 整数变量的值在传递给 c++ 中的函数后发生变化
- 为什么值会发生变化,尽管函数被定义为常量
- 将模板变化函数及其参数传递到一个函数
- 这个树搜索功能让我发疯.它返回 NULL,但不知何故主函数中的值发生了变化
- 当在函数内部使用静态变量时,输出会发生变化,该函数在c++中返回引用
- C 传递功能,将参数数量变化为参数到其他函数
- C/C 中POW()函数的实现是否随平台或编译器而变化
- C++:数组的大小在传递给函数后发生变化
- 链表头指针在传递给函数c++时发生变化
- 函数输入变化
- 为什么我的向量在通过构造函数传递后会发生变化
- 由于在 g++ 4.4.7 的 std::vector 中使用内联函数而导致精度变化C++ 32 位20120313
- 在递归函数中打印一次变量,该变量会随着每次递归而不断变化
- 成员函数的可访问性似乎随 SFML 中的范围而变化,C++ Xcode 中也是如此