Ciao mi chiedo perché lo standard C++ ci consente nelle classi nidificate di accedere ai campi privati della classe esterna, mentre vieta di accedere ai campi privati della classe interna dalla classe esterna. Capisco, questo esempio:C++ Accesso alla classe esterna Privato della classe interna - perché vietato
class OuterClass{
public:
class InnerClass{
public:
void printOuterClass(OuterClass& outer) {cout << outer.m_dataToDisplay;};
};
private:
int m_dataToDisplay;
};
va bene, perché cosa, a volte la classe interna può essere complicata. Ma penso seguente scenario è anche bene:
class Algorithm{
public:
class AlgorithmResults{
public:
void readAlgorithmResult();
private:
void writeAlgorithmResult();
};
void calculate(AlgorithmResults& results, Arguments...){
//calculate stuff
results.writeAlgorithmResult(results);
}
};
Per me tale struttura ha perfettamente senso, anche se non è consentito in C++. Ho anche notato che per un po 'di tempo entrambi erano permessi in Java, ma ora anche il secondo esempio è proibito. Qual è il motivo, il primo esempio è consentito e un altro è negato?
Scusate, ho invertito l'amicizia e ho dovuto risolvere. Questa è un'altra prova del fatto che il caffè è necessario prima di postare in SO! –