Re: Обращение к защищенному деструктору из наследника
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 14.07.11 09:48
Оценка:
Здравствуйте, RikkiTikkiTavi, Вы писали:

RTT>Здравствуйте!


RTT>Вроде бы неплохо знаю С++, но вот столкнулся с непоняткой:

RTT>
RTT>class A
RTT>{
RTT>protected:
RTT>    A() {}
RTT>    virtual ~A() {}
RTT>};

RTT>class B
RTT>    : public A
RTT>{
RTT>protected:
RTT>    B() {}
RTT>    virtual ~B() {}
RTT>public:
RTT>    void deleter(A* p) {
RTT>        if (p)
RTT>            delete p;            error C2248: 'A::~A' : cannot access protected member declared in class 'A'
RTT>    }
RTT>};
RTT>


RTT>

RTT>Почему не могу вызвать деструктор базового класса из наследника?

Потому что класс A ничего не знает о классе B, а деструктор protected. Ты хочешь удалить не this (можно), а левый объект класса A.
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.