相关疑难解决方法(0)

45
推荐指数
2
解决办法
9827
查看次数

为什么我们不能在作为方法默认参数的 lambda 中捕获它?

我试图捕获thislambda 函数中的指针,该函数用作方法的默认参数。

我的目标是从 lambda 中调用此类的方法,这需要捕获指针this

但是,以下代码会导致错误:

错误 C3639:作为默认参数一部分的 lambda 只能有一个 init-capture

克服此限制的常见解决方案是什么?

#include <functional>

class A{
    public:
    void B(std::function<void()> a = [this](){}); //error C3639: a lambda that is part of a default argument can only have an init-capture.
};
Run Code Online (Sandbox Code Playgroud)

c++ lambda this default-arguments

6
推荐指数
2
解决办法
159
查看次数

4
推荐指数
1
解决办法
1326
查看次数