Не удается вызвать переопределенный защищенный метод
Рассмотрим следующий код:
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(). Мне кажется это странным. Хочу понять, почему такое делать нельзя.