Quando stavo leggendo il Cocos2dx 3.0
API, ho trovato qualcosa di simile:Che cosa significa "[questo]" significa in 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);
}
};
Cosa [this]
significa? Questa nuova sintassi è C++11
?
Questo è un lambda e si sta vincolando l'istanza corrente ad esso. – Zeta
Significa che si acquisisce 'this'. – rightfold
C'è davvero un punto per menzionare esplicitamente questo? Non sarebbe automaticamente catturato dal riferimento a 'onKeyPressed' e' onKeyReleased' (supponendo che siano membri di 'this'). Anche un avvertimento, 'keyboardEvent' è ora in possesso di una copia del puntatore' this' ... guai se tu 'keyboardEvent' riesci a sopravvivere a qualsiasi cosa' this' sta puntando a .... (problemi di durata dell'oggetto standard) –