[英]How can I use a private member variable in a non-member function, when the variable happens to be a pointer?
[英]Does passing lambdas violate encapsulation when they use a private member variable?
我编写了一个传递给第三方课程的函数。 静态函数可以正常工作,直到该函数需要访问私有成员变量以完成其工作为止。 我可以使用lambda表达式来做到这一点(假设它可以自动或通过强制转换为std :: function)。
例:
void classA::doingThings()
{
...
classB::needsHelpToDoAThing(
[&](std::type foo) -> size_t { return myFunction(foo); }
);
...
}
size_t class::myFunction(type foo){
...
type someVar = m_somePrivateMember ...(some work)
...
}
但是我真的不明白我在做什么。 现在,该其他类正在使用来自其他类的私有成员变量。 这不是违反封装吗? 这是hack吗,还是我缺少/误解了一个概念?
封装是这样的想法,即其他代码不会在您的内心里随意地乱搞。
在这里,您创建了一个可以在内部查看的辅助函数。 即使您将其传递给其他人,该辅助功能也是您内在的一部分 。
这不比访问私有数据的成员方法破坏封装。 虽然它不是明确地属于类的接口的一部分,但仍是实现的一部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.