Russian Qt Forum

Программирование => С/C++ => Тема начата: billygates от Март 10, 2010, 14:34



Название: Приватное наследование: что я не понимаю?
Отправлено: billygates от Март 10, 2010, 14:34
Господа, расскажите, пожалуйста, на пальцах почему данный код не компилируется при использовании приватного наследования? Спасибо.

Код
C
class Base
{
public:
   Base(int sz) { }
   virtual ~Base() { }
};
 
class Derived: private Base
{
public:
   Derived(int sz) : Base(sz) { }
   ~Derived() { }
};
 
 
int main(void)
{
   Base* b = new Base(100);
   Base* d = new Derived(200);
 
   delete b;
   delete d;
}
 

Почему ‘Base’ is an inaccessible base of ‘Derived’ ?


Название: Re: Приватное наследование: что я не понимаю?
Отправлено: Tonal от Март 10, 2010, 14:40
Потому что о приват-наследовании знает только непосредственный потомок и больше никто. :)


Название: Re: Приватное наследование: что я не понимаю?
Отправлено: Akaiten от Март 10, 2010, 15:16
Потому что о приват-наследовании знает только непосредственный потомок и больше никто. :)

Кстати да, это вытекает из того, что через преобразование в базовый класс можно было бы получить доступ к его public членам, что противоречит концепции приватного наследования.