Вложенные классы в C++ контринтуитивны (воняют)

Вот сидишь ты, никого не трогаешь, никому не мешаешь, пишешь функцию у класса:

1414
33
22
11
11

Сделай вложенный класс private, а не public, и тогда
Это скомпилируется.компилироваться это не будет.

Экземпляр E класса B знать не знает ни про какой объемлющий класс A и что у него есть какое-то там целочисленное поле xА должен? Если он знает о его существовании, то ты где-то накосячил с проектированием и нарушаешь принципы ООП

16
Ответить

Классы - абстракция, модель, описывающая какую-то сущность. Если в твоей абстракции модель знает о том, что она часть чего-то большего и она обязана ей быть - передавай в конструкторе ссылку на это общее. И пусть она обращается строго по указателю к своему "владельцу".

8
Ответить

я бы хотел, чтоб знал. Вон там ява программист ответил выше, что в Яве знает.

Ответить

C++ по умолчанию поля класса считается все private. А вот поля структуры - public. Там не нужно ему писать private в данном случае.

Ответить