【发布时间】:2018-01-24 21:28:22
【问题描述】:
如何在此处从 lambda 访问静态成员?
class A
{
public:
A(std::function<void()> f)
{
f();
}
};
class B
{
private:
friend class A;
static bool c;
};
bool B::c = false;
A a([]() { B::c = true; });
这段代码给了我错误 C2248:
'B::c': 无法访问在类'B'中声明的私有成员
【问题讨论】:
-
我认为这不会奏效。我认为 A 的(静态)成员函数可以改变它。
-
您不能将 lambda 声明为好友。如果你想要这样的行为,你可以做一些技巧来暴露
c,但这取决于你愿意改变多少/lambda是否是内部代码
标签: c++ c++11 lambda compiler-errors