gpt4 book ai didi

c++ - 允许类访问单个私有(private)成员

转载 作者:太空狗 更新时间:2023-10-29 20:46:13 26 4
gpt4 key购买 nike

我有一个类 A,它有一个名为 a() 的私有(private)方法。我还有一个需要访问 a() 的 B 类(但只有 B 应该可以访问 a(),这就是为什么 a() 是私有(private)的)。我现在可以使用友元说明符,但这会使 A 的其他私有(private)方法(我们称它们为 b() 和 c())也可用于 B,我不希望出现这种行为。

有没有办法让 B 只能访问 A 的 a()?

最佳答案

有一种方法——如果你的类有一个公共(public)模板函数:

class A {
// apparently private
void priv () { std::cout << "got you A::a()" << std::endl ; }
public:
template <class T>
void abuse() {}
};


struct Thief {};

template <>
void A::abuse<Thief>() {
this->priv();
}

int main() {
A a;
// obviously do not compile : a.priv();
// this i OK
a.abuse<Thief>();

return 0;
}

我必须承认我从 GotW 偷了这个...

关于c++ - 允许类访问单个私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8700905/

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