¿Cómo se puede sobrecargar un operador < < para una clase privada anidada como esta?¿Operador de sobrecarga << para una clase privada anidada posible?
class outer {
private:
class nested {
friend ostream& operator<<(ostream& os, const nested& a);
};
// ...
};
Al tratar fuera del compilador clase externa se queja de privacidad:
error: ‘class outer::nested’ is private
y TH La función de impresión debe ser una función de miembro 'const'. Si es 'std :: ostream & print (std :: ostream & out) const', entonces' operator << 'puede ser solo una línea:' return obj.print (dest); '. – Nawaz
¿Por qué std: ostream necesita ser un amigo de Inner? – Mordachai
Porque de lo contrario no puede definirlo en 'Inner'. (Y si no está definido en 'Inner', tiene el problema de que no puede acceder a' Inner', porque 'Inner' es un miembro privado de' Outer'.) –