¿Cómo usar IF con un métodos de una clase?

Iniciado por Lord.Chester, 17 Enero 2016, 22:44 PM

0 Miembros y 1 Visitante están viendo este tema.

Lord.Chester

Buenas!

Me dirijo ustedes para realizar una duda muy concreta.

cout<<"Introduce el numero del satelite [0,4]:";
cin>>nsat;
cout<<"\n";
   
      if(Sat[nsat].EstaIdentificado())
  {
      cout<<"ADVERTENCIA EL SATELITE YA ESTA IDENTIFICADO";
  }
       else
       {
       cout<<"Satelite Numero "<<nsat<<endl;
   cout<<"Introduce Login: "; cin>>pLogin; cout<<endl;
       cout<<"Introduce Password Admin: "; cin>>pMaster; cout<<endl;
       cout<<"Introduce Nombre Satelite: "; cin>>pNombre; cout<<endl;
       cout<<"Introduce Fabricante: "; cin>>pFabrica; cout<<endl;
       cout<<"Introduce Numero de Serie: "; cin>>pNSerie; cout<<endl;

       Sat[nsat].Identificar(pLogin,  pMaster,  pNombre, pFabrica,  pNSerie);
}


Mi duda reside aqui : if(Sat[nsat].EstaIdentificado())



El método esta identificado es un bool que tiene que devolver true en un momento concreto. Pero para preguntar si ha devuelto true... ¿Estaría bien escrito o deberia poner algo como: if(Sat[nsat].EstaIdentificado()==true)?

Porque pare que no esta bien esa linea porque el programa me deja identificar infinitas veces un satélite (Este codigo debe permitir identificar un  "Satelite"(Sat[], es decir darle nombre...ect pero solo 1 VEZ) cuando eso no debería ser así.

Un saludo




MAFUS

Pon el código donde se cambia el valor de si el satélite está identificado.

Lord.Chester

#2
El codigo de la clase satélite:
class Satelite
{
   Identificacion Iden;
   Cadena Nombre;
   Cadena Fabricante;
   int NSerie;
   int Estado;
   float Tomas[NMESES][NDIAS];
public:
   Satelite();

   bool EstaIdentificado(){return Estado>=0;};
   bool EstaActivado(){return Estado==1;};
   bool Identificar(Cadena pLogin, Cadena pMaster, Cadena pNombre,
                    Cadena pFabrica, int pNSerie);
   bool Activar(Cadena pLogin, Cadena pPasswd);
   bool Desactivar(Cadena pLogin, Cadena pPasswd);
   void MostrarEstado();
   float GetToma(int pMes, int pDia);
   void SetToma(int pMes, int pDia, float pTemp);
   void Rellenar(int Porcen=90);
   Satelite operator+(Satelite pSat);
};




El codigo en concreto:
bool EstaIdentificado(){return Estado>=0;};
   bool EstaActivado(){return Estado==1;};


Esta parte del código la realizo mi tutor y ya estaba implementada y he de suponer que estaba bien, lo estados a los que hace referencia son -1=(No identificado ni activado), 0=(Identificado), 1=(Activado).

De todos modos sabes si es correcto:

if(Sat[nsat].EstaIdentificado()==true)

ó

if(Sat[nsat].EstaIdentificado())

Un saludo

MAFUS

Por ahora todo está bien. Muestra Identificar.