我有一个班级
class A
{
.....
private:
int mem1;
int mem2;
}
我有另一个B类,只需要访问mem1。
class B
{
....
}
如何仅从B类访问私有成员mem1?我不想用朋友。这意味着访问所有私人成员。
答案 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 {
// ...
};