Expandiendo cout para nuestras clases
Para que nuestras clases puedan ser correctamente ‘couteadas’, se debe realizar el siguiente procedimiento:
/** INTERFACE **/
#include <iostream>
using std::ostream;
class A
{
friend ostream &operator<<( ostream &, const A & );
public:
A(int);
int value;
};
/** IMPLEMENTATION **/
A::A(int arg) : value(arg){
}
ostream &operator<<( ostream &output, const A &a ) {
output << "Value: " << a.value;
return output; // enables cascaded calls
}
/** USE **/
#include <iostream>
using std::cout;
using std::endl;
int main(){
A a(5);
cout << a;
return 0;
}