En primer lugar, para seguir con las convenciones estándar, su operator<<
debe ser declarada como esto:
class A {
A& operator<<(const std::string&);
};
Ahora, técnicamente, se podría cumplidor parte de lo que quiere mediante la aplicación de la siguiente función global:
A * operator<< (A * a, const std::string& s) { (*a) << s; return a; }
Esto permitiría declaraciones como:
Sin embargo, usted no será capaz de escribir lo siguiente:
aPointer << "this will not compile.";
En cualquier caso, la escritura tal operador sería confuso, en el mejor de. Usted debe vivir con la sintaxis más sencilla de
(*aPointer) << "this will be printed.";
y escribir código que se adhiere a las convenciones establecidas para permitir a otros (ya usted mismo, en unas pocas semanas) para leer el código.
@sbi, gracias. fijo –
(Tenga en cuenta que "tipos de clase" abarca estructuras y uniones.) – sbi
@sbi correcto. las estructuras y los sindicatos son clases. Las funciones del operador se consideran cuando las estructuras y uniones son operandos de un operador adecuado, como para las clases declaradas con la clave de clase "clase". –