C ++ Доступ к внешнему классу Закрытый внутренний класс - почему запрещено
Здравствуйте, мне интересно, почему стандарт C ++ позволяет нам во вложенных классах получать доступ к закрытым полям внешнего класса, в то время как он запрещает доступ к закрытым полям внутреннего класса из внешнего класса. Я понимаю, что это пример:
class OuterClass{
public:
class InnerClass{
public:
void printOuterClass(OuterClass& outer) {cout << outer.m_dataToDisplay;};
};
private:
int m_dataToDisplay;
};
хорошо, потому что вещь, что Внутренний класс иногда может быть сложным. Но я думаю, что следующий сценарий также хорош:
class Algorithm{
public:
class AlgorithmResults{
public:
void readAlgorithmResult();
private:
void writeAlgorithmResult();
};
void calculate(AlgorithmResults& results, Arguments...){
//calculate stuff
results.writeAlgorithmResult(results);
}
};
Для меня эта структура имеет смысл, хотя она не разрешена в C ++. Я также заметил, что некоторое время оба были разрешены в Java, но теперь второй пример также запрещен. В чем причина того, что первый пример разрешен, а другой отклонен?