programa - sintaxis de c++
Qué significa "[esto]" en C++ (1)
¿Qué significa esto?
Introduce un lambda - un objeto de función invocable. Poner this
entre corchetes significa que el lambda captura this
, por lo que los miembros de este objeto están disponibles dentro de él. Lambdas también puede capturar variables locales, por valor o referencia, como se describe en la página vinculada.
La lambda tiene una sobrecarga de operator()
, por lo que se puede llamar como una función:
Event * event = some_event();
listener(event);
que ejecutará el código definido en el cuerpo de la lambda.
¿Es esta nueva sintaxis en C ++ 11?
Sí.
Cuando estaba leyendo la API de Cocos2dx 3.0
, encontré algo como esto:
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);
}
};
¿Qué significa [this]
? ¿Es esta nueva sintaxis en C++11
?