当我阅读Cocos2dx 3.0
API时,我发现了类似的内容:
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);
}
};
[this]
是什么意思?这是C++11
中的新语法吗?
答案 0 :(得分:57)
[这]意味着什么?
它引入了一个lambda - 一个可调用的函数对象。将this
放在括号中意味着lambda 捕获 this
,以便该对象的成员可以在其中使用。 Lambda还可以按值或引用捕获局部变量,如链接页面中所述。
lambda的重载为operator()
,因此可以像函数一样调用它:
Event * event = some_event();
listener(event);
将运行lambda体中定义的代码。
这是C ++ 11中的新语法吗?
是