9

例えば

class A
{
    void f() {}
    void g()
    {
        [this]() // Lambda capture this
        {
            f();
            A* p = this;
            [p]() // Workaround to let inner lambda capture this
            {
                p->f();
            };
        };
    }
};

これを内側のラムダでキャプチャするためのより良い方法はありますか?

4

2 に答える 2

8

を使用するだけ[=]で、これは暗黙的にキャプチャされます。コピーでキャプチャしたくない他の変数がある場合は、キャプチャするだけ[this]です。

于 2013-03-19T21:12:49.190 に答える
5

あなたはただ再捕獲することができますthis

class A
{
    void f() {}
    void g()
    {
        [this]()
        {
            f();
            [this]()
        //   ^^^^
            {
                f();
            };
        };
    }
};
于 2013-03-19T21:14:07.203 に答える