Назад к задачам
Junior — Senior
6

Получение указателя на базовый класс при protected‑наследовании

Получайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Условие задачи

Перепишите приведённый пример, не меняя модификатор доступа protected на public. Нужно показать, почему при попытке создать объект наследника и присвоить его указателю базового типа возникает ошибка компиляции, и как можно обойти её, не меняя уровень доступа.

class Base {
public:
    virtual ~Base() = default;
};

class Derived : protected Base {
};

void checkDerivedBase() {
    Base* basePtr = new Derived; // ошибка компиляции
}