比方说,我有一个类:
class A {
int a;
};
我有一个 lambda:
auto function = [](A* a) {
a->a; // <== gives an error in this line.
};
function(new A);
有没有办法在 lambda 中使用私有(private)成员/方法? - 没有必要将指针传递给 lambda - 它可能是 capture-by 或其他东西。
欢迎所有合理的方案。
最佳答案
您可以通过创建一个返回 lambda 函数的友元函数来实现。它继承了 friend 访问权限:
struct A {
friend std::function<void(A&, int)> f();
private:
int i;
void test() {std::cout << "test: " << i << "\n";}
};
std::function<void(A&, int)> f() {
return [] (A &a, int i) {a.i = i; a.test(); };
}
int main() {
A a;
f()(a, 13);
return 0;
}
关于c++ - 如何让 lambda 成为类(class)的 friend ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61544969/