[C con Clase] operador "<<"

jose luis jcmdustin en gmail.com
Dom Nov 27 16:34:30 CET 2011


Hola amigos... hace poco estube haciendo un programa para un profesor y encontre el siguiente ...

#include <iostream>
#include <string.h>
using namespace std;

const int MAXCANAL = 80 ; // numero maximo de canal
const int MAXVOLUMEN = 10 ; // nivel maximo de volumen
class televisor{
private:
    char marca[15] ;    // marca del televisor
    int canal ;         // numero de canal que esta sintonizando
    int volumen;        // nivel de volumen del televisor
    bool estado;        // false: apagado, true; prendido
public:
    televisor () ;
    televisor ( char m[15], int c, int v, bool e) ;
    televisor ( televisor &t) ;
    ~televisor () ;
    void getmarca () ;
    int getcanal () ;
    int getvolumen () ;
    void operator * () ;        // prender o apagar el televisor
    void operator ++ () ;       // cambia de canal al siguiente
    void operator -- () ;       // cambia de canal al anterior
    void cambiar (int c) ;      // cambiar al canal c
    void operator + (int n) ;   // aumenta el volumen n niveles
    void operator - (int n) ;   // disminuye el volumen n niveles
    friend bool operator == (televisor x, televisor y) ; // compara
};
televisor :: televisor ()
{
    strcpy(marca,"");
    canal = 0 ;
    volumen = 0 ;
    estado = false ;
}
televisor :: televisor ( char m[15], int c, int v, bool e)
{
    strcpy (marca, m) ;
    canal = c;
    volumen = v ;
    estado = e ;
}
televisor :: televisor ( televisor &t)
{
    strcpy (marca, t.marca ) ;
    canal = t.canal ;
    volumen = t.volumen ;
    estado = t.estado ;
}
televisor :: ~televisor ()
{
    // cout << "liberando memoria" ;
}
void televisor :: getmarca ()
{
    cout << "Marca : " << marca ;
}
int televisor :: getcanal ()
{
    return canal ;
}
int televisor :: getvolumen ()
{
    return volumen;
}
int main()
{
    bool stado = false ;
    char canal[15];
    strcpy (canal , "sony") ;
    televisor t1(canal, 15 , 8, stado );
    t1.getmarca();
    int c, v ;
    cout << "canal : " << t1.getcanal << endl ; // aqui esta el problema
    cout << "volumen : " << t1.getvolumen << endl ; // aqui tambien

    return 0;
}

cuando ejecuto el programa me sale error recpecto al operador << me sale el siguiente mensaje

C:\Documents and Settings\Administrador\Escritorio\Pepiam.cpp|74|error: no match for 'operator<<' in 'std::operator<< [with _Traits = std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)(& std::cout)), ((const char*)"canal : ")) << t1.televisor::getcanal'|

agradeceria su ayuda y explicasion por que no entiendo por que surge ese error!
gracias!
Se aprende a programar programando...


Más información sobre la lista de distribución Cconclase