我知道以下问题:C++11 lambda:成员变量捕获陷阱 https://stackoverflow.com/questions/7764564/c11-lambdas-member-variable-capture-gotcha。此外,我意识到需要通过捕获来捕获类成员this
指针,正如这个问题的答案明确指出的那样。
是的。捕获成员变量总是通过捕获 this 来完成;这是访问成员变量的唯一方法。
However,捕获this
指针捕获所有类成员。是否可以限制捕获哪些类成员?例如,可以捕获单个班级成员?
我知道以下不起作用,但是有可能实现吗?
class Foo
{
public:
Foo() : mBar1(1), mBar2(2) {}
void doBar()
{
auto test = [this->mBar1]()
{
std::cout << mBar1 << "\n";
// Trying to access 'mBar2' here would fail to compile...
};
test();
}
int mBar1;
int mBar2;
};
来自评论:
为什么需要这个?
I don't need去做这个。我只是想知道这是否可能,如果可能的话该如何做。
使用 C++11 你必须捕获this
.
但是,在 C++14 中,您可以通过值捕获任意表达式:
[mBar1 = this->mBar1]() { ... }
或参考:
[&mBar1 = this->mBar1]() { ... }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)