我有一个类 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/