• Miércoles 6 de Noviembre de 2024, 07:25

Autor Tema:  podeis decirme donde se encuentra el fallo en la clase Fecha  (Leído 4402 veces)

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
podeis decirme donde se encuentra el fallo en la clase Fecha
« en: Jueves 2 de Octubre de 2008, 16:17 »
0
Hola estoy definiendo la clase fecha y cuando un metodo lo pongo String me da error...la clase es la siguiente:

#include<iostream>
#include<string>


//using namespace std;



class Fecha{

   private:
      int dia,mes,anyo;   

   public:
      
      Fecha();
      Fecha(int d,int m,int a);
      Fecha(const Fecha &f);
      ~Fecha();
      bool setDia(int d);
      bool setMes(int m);
      bool setAnyo(int a);
      int getDia()const;
      int getMes()const;
      int getAnyo()const;
      bool isBisiesto()const;
      string toString()const; //en esta linea me da error
      
};

"el error que me pone dice:
./include/Fecha.h:27: error: ‘string’ no nombra a un tipo
make: *** [Fecha.o] Error 1


Otra de mis dudas es que el constructor por defecto tiene que crear un objeto con la fecha actual,se haría de la siguiente manera?:


Fecha::Fecha(){

//fecha y hora del sistema
 time_t ahora=time(0);

//convertir a struct tm para fecha y hora local
tm* localtm=localtime(&now);
cout<<localtm->tm_mday <<"/"
    <<localtm->tm_mon+1<<"/"
    <<localtm->tm_year+1900<<endl;

}

es que tambien me da errores y no se el motivo, (claro para todo esto antes pongo #include<ctime>)

Esas son mis dos dudas.

Un saludo,espero respuesta.



Podeis ayudarme?

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: podeis decirme donde se encuentra el fallo en la clase Fecha
« Respuesta #1 en: Jueves 2 de Octubre de 2008, 16:43 »
0
Cita de: "pacorubio77"
string toString()const;

No te reconoce la clase "string". No sé por qué puede ser... Sigo investigando...

Cita de: "pacorubio77"
tm* localtm=localtime(&now);

¿Y "now" dónde está declarado? Supongo que habrás querido poner "ahora".

shakka

  • Miembro HIPER activo
  • ****
  • Mensajes: 679
  • Nacionalidad: cr
    • Ver Perfil
    • http://mbrenes.com
Re: podeis decirme donde se encuentra el fallo en la clase Fecha
« Respuesta #2 en: Jueves 2 de Octubre de 2008, 17:26 »
0
Código: C++
  1. string toString()const; //en esta linea me da error
  2.  

una de 2:
o descomentas

Código: C++
  1. using namespace std;
  2.  

o

Código: C++
  1. std::string toString()const;
  2.  

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
podeis decirme si está bien echo el constructor?
« Respuesta #3 en: Viernes 3 de Octubre de 2008, 10:29 »
0
Hola,tengo que hacer un constructor con la fecha actual, y no me sale la fecha actual,,,yo tengo lo siguiente:

Fecha::Fecha(){

//fecha y hora del sistema
 time_t ahora=time(0);

//convertir a struct tm para fecha y hora local
tm* localtm=localtime(&ahora);
cout<<localtm->tm_mday <<"/"
    <<localtm->tm_mon+1<<"/"
    <<localtm->tm_year+1900<<endl;

}

este es el constructor,está bien echo? me podeis decir los errores?

Un saludo,espero respuesta.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: podeis decirme si está bien echo el constructor?
« Respuesta #4 en: Viernes 3 de Octubre de 2008, 10:57 »
0
Estás repitiendo el post...

¿Qué valores te asigna a tm?

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: podeis decirme si está bien echo el constructor?
« Respuesta #5 en: Viernes 3 de Octubre de 2008, 11:00 »
0
no se que me has querido con "que valores te asigna a tm?"
no te he entendido.

Un saludo,espero respuesta.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: podeis decirme donde se encuentra el fallo en la clase Fecha
« Respuesta #6 en: Viernes 3 de Octubre de 2008, 11:24 »
0
tm, ¿qué valores contiene?

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: podeis decirme donde se encuentra el fallo en la clase Fecha
« Respuesta #7 en: Viernes 3 de Octubre de 2008, 11:26 »
0
No se que valores contiene,lo sabe usted? soy muy novato en objetos y eso me lo dieron para ayudarme a sacar la fecha actual y yo pense que sería el constructor...

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: podeis decirme donde se encuentra el fallo en la clase Fecha
« Respuesta #8 en: Viernes 3 de Octubre de 2008, 11:35 »
0
Cita de: "pacorubio77"
No se que valores contiene,lo sabe usted?

Hombre, yo no lo puedo saber. El que lo ejecutas eres tú.

Cita de: "pacorubio77"
yo pense que sería el constructor

Sí, es el contructor por defecto de la clase Fecha.

¿Qué te sale por pantalla cuando llamas al constructor?

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: podeis decirme donde se encuentra el fallo en la clase Fecha
« Respuesta #9 en: Viernes 3 de Octubre de 2008, 11:50 »
0
ahh,,,espera un momento,pero como en c++ se llama al constructor por defecto siempre...no se como mostrarlo por pantalla....

EI: JUNTANDO MENSAJES, POR FAVOR USA EL BOTON EDITAR LA PROXIMA VEZ.

Mira he echo una prueba ,pero sin meter el codigo en el constructor ,es decir una prueba individual en un main aparte...

el codigo que he probado es el siguiente:

Código: Text
  1.  
  2. int main(){
  3.  
  4. //fecha y hora del sistema
  5.  time_t ahora=time(0);
  6.  
  7. //convertir a struct tm para fecha y hora local
  8. tm* localtm=localtime(&ahora);
  9. cout<<localtm->tm_mday <<"/"
  10.     <<localtm->tm_mon+1<<"/"
  11.     <<localtm->tm_year+1900<<endl;
  12.  
  13. }
  14.  
  15. y entonces la salida es:3/10/2008
  16.  
  17. pero claro si el constructor tengo que tener la fecha actual ,que tengo que almacenarlo en dia,mes ,anyo ?
  18. si mi clase es:
  19.  
  20. class Fecha{
  21.  
  22.     private:
  23.         int dia,mes,anyo;  
  24.  
  25.     public:
  26.        
  27.         Fecha();
  28.         Fecha(int d,int m,int a);
  29.         Fecha(const Fecha &f);
  30.         ~Fecha();
  31.         bool setDia(int d);
  32.         bool setMes(int m);
  33.         bool setAnyo(int a);
  34.         int getDia()const;
  35.         int getMes()const;
  36.         int getAnyo()const;
  37.         bool isBisiesto()const;
  38.         string toString()const;
  39.        
  40. };
  41.  

Perdon por las molestias y espero su ayuda.
Gracias.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: podeis decirme donde se encuentra el fallo en la clase Fecha
« Respuesta #10 en: Viernes 3 de Octubre de 2008, 13:07 »
0
Cita de: "pacorubio77"
que tengo que almacenarlo en dia,mes ,anyo ?

Ah bueno, eso nunca lo comentaste  :no:

Código: C
  1.  
  2. Fecha::Fecha(){
  3.  
  4.     //fecha y hora del sistema
  5.     time_t ahora=time(0);
  6.  
  7.     //convertir a struct tm para fecha y hora local
  8.     tm* localtm=localtime(&ahora);
  9.     dia = localtm->tm_mday;
  10.     mes = localtm->tm_mon+1;
  11.     anyo = localtm->tm_year+1900;
  12. }
  13.  
  14.  

Por cierto, ¿ya te deja de dar error por lo de "string"?

pacorubio77

  • Miembro MUY activo
  • ***
  • Mensajes: 207
    • Ver Perfil
Re: podeis decirme donde se encuentra el fallo en la clase Fecha
« Respuesta #11 en: Viernes 3 de Octubre de 2008, 13:20 »
0
Si ,por lo de string ya me dejo de dar error,hice por una parte lo que me dijo usted, char *,pero lo que hice es incluir #nclude<cstring> y #include<string.h>

Ahora tengo error en otro dos metodos ,que no se que tengo que hacer,ahi van:

El método imprimir() debe imprimir la fecha en formato
<dia>/<mes>/<año>. Si algún atributo contiene un valor no válido,
imprimirá “<Fecha no valida>”. El método toString() devolverá una
cadena en este mismo formato.

pero es que el metodo imprimir se tiene que definir como void Imprimir(ostream &os)const, y no se lo que le tengo que meter como parametro y el metodo toString tengo que sacar la fecha,pero me es necesario una funcion para sacar la cadena?

un saludo,espero respuesta.
Gracias.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: podeis decirme donde se encuentra el fallo en la clase Fecha
« Respuesta #12 en: Viernes 3 de Octubre de 2008, 13:46 »
0
Como ya te he dicho:

http://www.cplusplus.com/reference/iostream/ostream/

Y deberías de hacer caso del post de shakka:

Cita de: "shakka"
una de 2:
o descomentas

using namespace std;

o

std::string toString()const;