Возможный дубликат:
не может вызвать функции, защищенные базовым классом?
Я не понимаю следующее, когда Derived
наследует от Base
, он получает доступ к его защищенным членам, к которым можно получить доступ через производные функции. Но если класс Base
пытается получить доступ к своим членам из класса Derived
(который сам разрешает доступ к Base
), он не получает доступ, почему?
class Base {
protected:
int x;
};
class Derived : Base {
public:
void foo(Base* b);
};
void Derived::foo(Base* b) {
b->x = 2; // cannot access protected member,
// though Derived inherits from Base, why?
}