Не удается вызвать переопределенный защищенный метод

Рассмотрим следующий код:

class Interface
{
protected:

  virtual void Protected() const = 0;

};

class Implementation : public Interface
{
public:

  void Public(const Interface& interface)
  {
    interface.Protected();
  }

protected:

  void Protected() const override
  {
    // ...
  }
};

При попытке собрать такой код, компилятор говорит мне, что я неправ, и мне нельзя давать доступ к методу Protected(). Мне кажется это странным. Хочу понять, почему такое делать нельзя.


Ответы (0 шт):