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();
            };
        };
    }
};

有什么更好的方法可以在内部 lambda 中捕获它?

4

2 回答 2

8

只需使用[=],这是隐式捕获的。如果您有其他不想通过副本捕获的变量,那么只需 capture [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 回答