c++ - static function c



Cosa significa "[this]" in C++ (1)

Cosa significa questo?

Introduce un lambda , un oggetto funzione richiamabile. Metterlo tra parentesi significa che il lambda lo cattura , in modo che i membri di questo oggetto siano disponibili al suo interno. Lambdas può anche catturare variabili locali, per valore o riferimento, come descritto nella pagina collegata.

Il lambda ha un overload di operator() , in modo che possa essere chiamato come una funzione:

Event * event = some_event();
listener(event);

che eseguirà il codice definito nel corpo della lambda.

Questa nuova sintassi è in C ++ 11?

Sì.

https://ffff65535.com

Quando stavo leggendo l'API Cocos2dx 3.0 , ho trovato qualcosa di simile a questo:

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 significa [this] ? Questa nuova sintassi è in C++11 ?





cocos2d-x