Почему интерфейс имеет особую видимость в методе из-за частного наследования?
Обратите внимание, что в моем производном классе требуется глобальный спецификатор :: .
Я не понимаю, почему метод наследует какую-то видимость из-за частного наследования. Вполне разумно, что у производного класса нет доступа к 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 ++. Можем ли мы сломать константу или что-то в этом роде?