gpt4 book ai didi

c++ - 如何让 lambda 成为类(class)的 friend ?

转载 作者:行者123 更新时间:2023-12-02 10:33:04 32 4
gpt4 key购买 nike

比方说,我有一个类:

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/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com