當我讀Cocos2dx 3.0
API,我發現這樣的事情:什麼是 「[這]」 意味着C++
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
中的新語法嗎?
這是拉姆達以及你目前的實例綁定到它。 – Zeta
這意味着你捕獲'this'。 – rightfold
明確提及'this'真的有意義嗎?它不會自動被「onKeyPressed」和「onKeyReleased」引用捕獲(假設它們是'this'的成員)。同時警告,'keyboardEvent'現在持有'this'指針的副本...臨頭你,如果'keyboardEvent'設法活得比任何'this'所指向....(標準對象的生命週期問題) –