【发布时间】:2014-02-08 14:08:30
【问题描述】:
比方说,我有一堂课:
class A {
int a;
};
我有一个 lambda:
auto function = [](A* a) {
a->a; // <== gives an error in this line.
};
function(new A);
有没有办法在 lambda 中使用私有成员/方法? - 没有必要将指针传递给 lambda - 它可能是 capture-by 或其他东西。
欢迎所有合理的方案。
【问题讨论】:
-
为什么不直接使用
std::function类型? en.cppreference.com/w/cpp/utility/functional/function -
你能给出一个用例吗? lambda 可以通过多种潜在方式访问私有成员,但在不了解用例的情况下尚不清楚哪种方法是可接受的。
-
@user2485710
std::function类型如何帮助我访问 lambdas 中的私有成员? -
@abyss.7:也许你想让你的测试班成为朋友。
-
请注意,如果 lambda 在类的范围内定义,它确实可以访问私有成员。