Как вызвать переменную/метод вложенного класса при условии что вложенный класс 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 шт):
Для начала перестаньте писать "метод". В плюсах это все таки функция или функия-член (member function). На русскоязычном пространстве это ещё ок, на англоязычном Вас будут поправлять.
Да, просто так достучатся к приватным внутренностям нельзя. На то они и приватные. И это скорее всего ошибка в дизайне, если хочется просто так получать доступ к приватным внутренностям.
Скорее всего Вам нужны функции в основном классе, который будет изменять внутренности приватного класса и сам за ним следить, а внешний код не будет ничего знать об этом.