0

我写了一个函数来传递给第三方的类。静态函数可以正常工作,直到该函数需要访问私有成员变量才能完成其工作。我可以使用 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)
...
}

但我真的不明白我在做什么。现在这个其他类正在使用来自不同类的私有成员变量。这不违反封装吗?这是黑客还是我错过/误解了一个概念?

4

1 回答 1

1

封装是这样一种想法,即其他代码不会随意在你的内心深处徘徊。

在这里,您创建了一个辅助函数,可以在您的内部进行探索。这个辅助函数是你内部的一部分,即使你将它传递给其他人。

与访问私有数据的成员方法相比,这不会破坏封装。虽然它不是明确的类接口的一部分,但它仍然是实现的一部分。

于 2016-01-11T04:13:39.620 回答