Wenn ich die Cocos2dx 3.0
API zu lesen war, habe ich so etwas wie dies gefunden:Was bedeutet "[das]" in C++ bedeutet
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);
}
};
Was bedeutet [this]
bedeuten? Ist diese neue Syntax in C++11
?
Das ist ein Lambda, und Sie binden die aktuelle Instanz daran. – Zeta
Es bedeutet, dass Sie 'this' erfassen. – rightfold
Gibt es wirklich einen Punkt, um 'this' explizit zu erwähnen? Würde es nicht automatisch durch den Verweis auf "onKeyPressed" und "onKeyReleased" erfasst (vorausgesetzt, sie sind Mitglieder von 'this'). Auch eine Warnung, 'keyboardEvent', hält jetzt eine Kopie des 'this'-Zeigers ... wehe dir, wenn' keyboardEvent' es schafft, zu überleben, was auch immer' this' zeigt .... (Standard-Objekte lebenslange Ausgaben) –