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, но теперь второй пример также запрещен. В чем причина того, что первый пример разрешен, а другой отклонен?

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

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