【发布时间】:2022-11-13 16:31:24
【问题描述】:
我想要一个具有公共和私有方法的类“Foo”,以及一个可以访问 Foo 的一些私有方法但不是所有私有成员的朋友类“Bar”。
class Foo
{
private:
friend class Bar;
// hidden from Bar
int x = 0;
// visible to Bar
void setX(int value)
{
x = value;
}
public:
int getX()
{
return x;
}
};
class Bar
{
public:
void modifyFoo(Foo& foo)
{
foo.setX(5);
// should produce an error
//foo.x = 5;
}
};
【问题讨论】:
-
附带说明:对友元类或函数的需求通常表明类层次结构和接口设计不佳。恕我直言,这应该完全保留用于单元测试某些特殊情况。
标签: c++ private friend-class