访问特定类的特定私有成员

时间:2016-10-13 16:43:06

标签: c++

我有一个班级

class A
{
.....
private:
    int mem1;
    int mem2;
}

我有另一个B类,只需要访问mem1。

class B
{
  ....
}

如何仅从B类访问私有成员mem1?我不想用朋友。这意味着访问所有私人成员。

2 个答案:

答案 0 :(得分:4)

class A进行一些重新排列(可能不一定是可以接受的),你可以做到这一点:

class Base
{
    friend class B;
    int mem1;
};

class A : public Base
{
    int mem2;
};

这利用了friend船舶通过继承不可传递的事实。

然后,对于class B

class B
{
    void foo(A& a)
    {
        int x = a.mem1; // allowed
        int y = a.mem2; // not allowed    
    }
};

答案 1 :(得分:3)

您可以使用成员mem1和朋友B

编写基类
class Base {
   protected:
   int mem1;
   friend class B;
};

class A: private Base {
  // ...
};