Cocos2dx 3.0
APIを読んでいたとき、次のようなものを見つけました。
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
にありますか?
[これ]はどういう意味ですか?
lambda -呼び出し可能な関数オブジェクトを導入します。 this
を角かっこで囲むことは、ラムダcapturesthis
を意味するため、このオブジェクトのメンバーはその中で使用できます。 。リンク先のページで説明されているように、ラムダは値または参照によってローカル変数をキャプチャすることもできます。
ラムダにはoperator()
のオーバーロードがあるため、関数のように呼び出すことができます。
Event * event = some_event();
listener(event);
ラムダの本体で定義されたコードを実行します。
これはC++ 11の新しい構文ですか?
はい。