1hu*_*ill 45 c++ api syntax cocos2d-x c++11
当我阅读Cocos2dx 3.0API时,我发现了这样的事情:
auto listener = [this](Event* event){
auto keyboardEvent = static_cast<EventKeyboard*>(event);
if (keyboardEvent->_isPressed)
{
if (onKeyPressed != nullptr)
onKeyPressed(keyboardEvent->_keyCode, event);
}
else
{
if (onKeyReleased != nullptr)
onKeyReleased(keyboardEvent->_keyCode, event);
}
};
Run Code Online (Sandbox Code Playgroud)
什么[this]意思?这是新的语法C++11吗?
Mik*_*our 57
这是什么意思?
它引入了一个lambda - 一个可调用的函数对象.放在this括号中意味着lambda 捕获 this,以便该对象的成员可以在其中使用.Lambda还可以按值或引用捕获局部变量,如链接页面中所述.
lambda有一个重载operator(),所以可以像函数一样调用它:
Event * event = some_event();
listener(event);
Run Code Online (Sandbox Code Playgroud)
它将运行lambda体中定义的代码.
这是C++ 11中的新语法吗?
是.
| 归档时间: |
|
| 查看次数: |
4391 次 |
| 最近记录: |