【发布时间】:2020-02-11 06:35:38
【问题描述】:
为什么接口由于私有继承而在方法中具有特殊的可见性?
请注意,我的派生类中需要全局说明符 ::。
我不明白为什么一个方法由于私有继承而继承了某种可见性。 Derived 类无法访问 Control 是完全合理的。但是为什么它也不能通过成员访问呢?
class Control
{
public:
void ModifySomething();
};
class Base : private Control
{
private:
virtual void Update( Control& i_control );
};
class Derived : public Base
{
private:
// ----------↓↓
void Update( ::Control& i_control ) override;
};
注意:我知道我们可以通过组合来解决这个问题。但我想知道为什么它在 C++ 中是这样定义的。我们可以打破 const-ness 还是什么?
【问题讨论】:
-
您似乎在问多个不同的问题。你能编辑你的问题,让它提出一个明确的问题吗?
-
你说的
But why also through a member?是什么意思 -
@Brian 现在还好吗?
-
@appleapple 修复可读性
标签: c++ class inheritance access-control injected-class-name