C ++ Zugriff auf die äußere Klasse Privater Zugriff auf die innere Klasse - warum verboten

Hallo, ich frage mich, warum der C ++ - Standard es uns in verschachtelten Klassen erlaubt, auf die privaten Felder der äußeren Klasse zuzugreifen, während er den Zugriff auf die privaten Felder der inneren Klasse von der äußeren Klasse aus verbietet. Ich verstehe, dass dieses Beispiel:

class OuterClass{
public:
    class InnerClass{
    public:
        void printOuterClass(OuterClass& outer) {cout << outer.m_dataToDisplay;};
    };
private:
    int m_dataToDisplay;
};

ist in Ordnung, weil die innere Klasse manchmal kompliziert sein kann. Aber ich denke folgendes Szenario ist auch in Ordnung:

class Algorithm{
public:
    class AlgorithmResults{
    public:
        void readAlgorithmResult();
    private:
        void writeAlgorithmResult();
    };

    void calculate(AlgorithmResults& results, Arguments...){
       //calculate stuff
       results.writeAlgorithmResult(results);
    }
};

Für mich macht diese Struktur durchaus Sinn, obwohl sie in C ++ nicht erlaubt ist. Mir ist auch aufgefallen, dass beides seit einiger Zeit in Java erlaubt war, jetzt ist aber auch das zweite Beispiel verboten. Was ist der Grund, warum das erste Beispiel zulässig ist und ein anderes abgelehnt wird?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage