Come si può sovraccaricare un operatore < < per una classe privata nidificata come questa?Operatore di overloading << per una classe privata nidificata possibile?
class outer {
private:
class nested {
friend ostream& operator<<(ostream& os, const nested& a);
};
// ...
};
Quando si cerca al di fuori del compilatore classe esterna si lamenta per la privacy:
error: ‘class outer::nested’ is private
e tH La funzione di stampa dovrebbe essere una funzione membro 'const'. Se è 'std :: ostream & print (std :: ostream & out) const', quindi' operator << 'può essere solo una riga:' return obj.print (dest); '. – Nawaz
Perché std: ostream deve essere un amico di Inner? – Mordachai
Perché non è possibile definirlo in 'Interno 'altrimenti. (E se non è definito in 'Interno', hai il problema che non può accedere a' Interno', perché 'Interno' è un membro privato di' Outer'.) –