gpt4 book ai didi

c++ - 当使用私有(private)成员变量时,传递 lambda 是否违反封装?

转载 作者:行者123 更新时间:2023-11-28 05:53:26 26 4
gpt4 key购买 nike

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

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

最佳答案

封装是指其他代码不会随意在您的内部四处乱窜。

在这里,您创建了一个辅助函数,可以在您的内脏中四处游荡。这个辅助函数是您内部结构的一部分,即使您将它传递给其他人也是如此。

与访问私有(private)数据的成员方法一样,这不会破坏封装。虽然它不是显式类接口(interface)的一部分,但它仍然是实现的一部分。

关于c++ - 当使用私有(private)成员变量时,传递 lambda 是否违反封装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34713292/

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