находятся!

т ответ к вопросу "Почему мой объект не может получить доступ к защищенным членам другого объекта, определенного в общем базовом классе?"можно прочитать:Вы можете получить доступ к защищенным членам только из своего собственного экземпляра базового класса.

Либо я не правильно понимаю, либо

следующий MCVE (жить на колиру) доказывает, что это неправильно:В свете двух ошибок я задаюсь вопросом: почему я могу получить доступ к другому

struct Base           { void f(); protected: int prot; };
struct Derived : Base { void g(); private:   int priv; };

void Base::f()
{
    Base b;
    b.prot = prot;
    (void) b;
}

void Derived::g()
{
    {
        Derived d;
        (void) d.priv;
    }

    {
        Derived& d = *this;
        (void) d.priv;
    }

    {
        Derived d;
        (void) d.prot; // <-- access to other instance's protected member
    }

    {
        Derived& d = *this;
        (void) d.prot;
    }

    // ---

    {
        Base b;
        (void) b.prot; // error: 'int Base::prot' is protected within this context
    }

    {
        Base& b = *this;
        (void) b.prot; // error: 'int Base::prot' is protected within this context
    }
}

 защищенный член экземпляра из областиDerived но не может получить доступ к другомуDerived защищенный член экземпляра из той же области, независимо от того, чтоBase отклоняется отDerived? Tl; доктор: что делаетBase более "частный", чемprotected в этом случае?privateПримечания

пожалуйста, не закрывайте этот вопрос как дубликат связанного вопроса;:

лучшее предложение названия приветствуются.Спецификаторы доступа работают одинаково, даже если вы

Ответы на вопрос(0)

Ваш ответ на вопрос