假设我们有两个类:
class Base
{
private:
int x;
public:
void f();
};
class Foo
{
// some variables and methods
};
现在每个人都可以打电话Base::f(),但我只想Foo能够这样做。
为了达到这个效果,我们可以设为Base::f()private并声明Foo为friend:
class Base
{
private:
int x;
void f();
friend Foo;
};
这种方法的问题在于它Foo可以同时访问Base::f()和Base::x(甚至可以访问 的任何其他私有成员Base)。但我只想Foo访问Base::f().
有没有办法让一个类(或一个函数)只授予对另一个类的某些私有成员的访问权限?或者也许有人可以提出更好的方法来解决我的问题?
编辑:
我将尝试指定我需要的访问限制。首先,Base是库中的一个接口(实际上是一个抽象类)。用户仅使用从Base. Base::f()仅由Foo库中的另一个类调用。对用户隐藏Base::f()很重要,因为只Foo知道何时调用它。同时,Foo也不应该打扰其他成员Base。