May7 2009 text

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;
}

blog comments powered by Disqus