【发布时间】:2010-10-04 23:48:39
【问题描述】:
我有一个类(A 类),它旨在被其他人编写的其他类继承。 我还有另一个类(B 类),它也继承自 A。
B 必须访问 A 的一些成员函数,而这些成员函数不应被其他继承类访问。
因此,这些 A 的成员函数对于 B 应该是公共的,但对于其他人来说应该是私有的。
如何在不使用“朋友”指令的情况下解决它?
谢谢。
编辑:为什么我需要它。
class A
{
public:
void PublicFunc()
{
PrivateFunc();
// and other code
}
private:
virtual void PrivateFunc();
};
class B : public class A
{
private:
virtual void PrivateFunc()
{
//do something and call A's PrivateFunc
A::PrivateFunc(); // Can't, it's private!
}
};
【问题讨论】:
-
你能写出你为什么需要它吗?
-
好吧,代码示例说明了为什么在语法上需要它,而不是为什么在设计上需要它。对于这样一个微不足道的案子朋友做了该做的事。有多少派生类需要好友访问? >1?
标签: c++ inheritance private