Как вызвать переменную/метод вложенного класса при условии что вложенный класс private?

День добрый! Изучаю тему вложенных классов, не совсем пониманию, как мне вызвать метод или переменную вложенного класса с модификатором private.(Если я использую public с вложенным class, то все работает)

Может быть необходимо создать метод в классе A (так называемый сеттер), чтобы обращаться к приватному вложенному классу или это технически невозможно? Не понимаю, подскажите, пожалуйста.

class A 
{
private:
    int m_a;
    
    class Inside_class
    {
    private:
        int m_b;
    public:
        Inside_class(int b) :m_b(b)
        {}
        void showDataOfInsideClass() { std::cout << m_b; }
    };
    

public:
    A(int a = 0): m_a(a) { }
    int showData() { return m_a; }
};


int main() {
    A object;
    A::Inside_class obj(5);//невозможно обратиться к private class, объявленному в классе "A"
   

}

Ответы (1 шт):

Автор решения: KoVadim

Для начала перестаньте писать "метод". В плюсах это все таки функция или функия-член (member function). На русскоязычном пространстве это ещё ок, на англоязычном Вас будут поправлять.

Да, просто так достучатся к приватным внутренностям нельзя. На то они и приватные. И это скорее всего ошибка в дизайне, если хочется просто так получать доступ к приватным внутренностям.

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

→ Ссылка