Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema de novato con clases

Estas en el tema de Problema de novato con clases en el foro de C/C++ en Foros del Web. Hola, estoy aprendiendo ahora c++ y para programar estoy usando eclipse, ahora bien, cuando defino una clase, uso una opción que trae de generar código ...
  #1 (permalink)  
Antiguo 12/04/2011, 17:55
 
Fecha de Ingreso: octubre-2009
Mensajes: 13
Antigüedad: 14 años, 6 meses
Puntos: 0
Problema de novato con clases

Hola, estoy aprendiendo ahora c++ y para programar estoy usando eclipse, ahora bien, cuando defino una clase, uso una opción que trae de generar código fuente para que genere los get y set para la clase. El problema es que he dado con una clase en la que he metido un tipo enum y no me hace automáticamente los get y set, y he probado a hacerlos yo pero me da fallo. Si alguien me puede ayudar... aqui le dejo el fragmento de código. Gracias y un saludo.

Código:
/* EN CLIENTE.H */

class Cliente{
private:
	string DNI; /**<DNI sin letra*/
	string nombre; /**<Nombre separado por un espacio en blanco si es necesario*/
	unsigned int edad;
	enum estado_civil{soltero, casado, viudo, divorciado};
public:
    string getDNI() const;
    unsigned int getEdad() const;
    string getNombre() const;
    enum getEstado_civil() const; 
 /*error en esta linea - Multiple markers at this line
	- Syntax error
	- use of enum 'getEstado_civil' without previous 
	 declaration
	- expected unqualified-id before ')' token*/

    void setDNI(string DNI);
    void setEdad(unsigned int edad);
    void setNombre(string nombre);
    void setEstado_civil(enum estado_civil);
};
Código:
/*EN CLIENTE.CPP*/

string Cliente::getDNI() const
{
    return DNI;
}

unsigned int Cliente::getEdad() const
{
    return edad;
}

string Cliente::getNombre() const
{
    return nombre;
}


/*ERROR AQUI - - Syntax error
	- expected unqualified-id before ')' token
	- 'getEstado_civil' in class 'Cliente' does not 
	 name a type*/
enum Cliente::getEstado_civil() const
{
    return estado_civil;
}

void Cliente::setDNI(string DNI)
{
    this->DNI = DNI;
}

void Cliente::setEdad(unsigned int edad)
{
    this->edad = edad;
}

void Cliente::setNombre(string nombre)
{
    this->nombre = nombre;
}

void Cliente::setEstado_civil(enum estado_civil)
{
    this->estado_civil = estado_civil; 
/*ERROR
- expected primary-expression before 
	 ';' token
	- invalid use of 'enum 
	 Cliente::estado_civil'*/
}
  #2 (permalink)  
Antiguo 13/04/2011, 00:53
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Problema de novato con clases

Es que el enum no es una clase, el enum es un tipo enumerado. enum es una palabra reservada para declarar tipos enumerados, no es el nombre de una clase o de un tipo (como tu lo estas utilizando).

En este caso el tipo enumerado que has definido es estado_civil. Lo deberías definir fuera de la clase y luego declarar una variable de ese tipo.

Aquí, el atributo ec de la clase Cliente será de tipo estado_civil, y podrá tener los valores soltero, casado, viudo o divorciado

Código C++:
Ver original
  1. /* EN CLIENTE.H */
  2.  
  3. enum estado_civil{soltero, casado, viudo, divorciado};
  4.  
  5. class Cliente{
  6. private:
  7.     string DNI; /**<DNI sin letra*/
  8.     string nombre; /**<Nombre separado por un espacio en blanco si es necesario*/
  9.     unsigned int edad;
  10.     estado_civil ec;
  11. public:
  12.     string getDNI() const;
  13.     unsigned int getEdad() const;
  14.     string getNombre() const;
  15.     estado_civil getEstado_civil() const;
  16.     void setDNI(string DNI);
  17.     void setEdad(unsigned int edad);
  18.     void setNombre(string nombre);
  19.     void setEstado_civil(estado_civil estado);
  20. };

Luego es simplemente usar estado_civil como tipo de datos, al igual que se usa int, char o String (como ves, en el .h he cambiado las definiciones para que así sea), quedando así el .cpp

Código C++:
Ver original
  1. /*EN CLIENTE.CPP*/
  2.  
  3. string Cliente::getDNI() const
  4. {
  5.     return DNI;
  6. }
  7.  
  8. unsigned int Cliente::getEdad() const
  9. {
  10.     return edad;
  11. }
  12.  
  13. string Cliente::getNombre() const
  14. {
  15.     return nombre;
  16. }
  17.  
  18. estado_civil Cliente::getEstado_civil() const
  19. {
  20.     return ec;
  21. }
  22.  
  23. void Cliente::setDNI(string DNI)
  24. {
  25.     this->DNI = DNI;
  26. }
  27.  
  28. void Cliente::setEdad(unsigned int edad)
  29. {
  30.     this->edad = edad;
  31. }
  32.  
  33. void Cliente::setNombre(string nombre)
  34. {
  35.     this->nombre = nombre;
  36. }
  37.  
  38. void Cliente::setEstado_civil(estado_civil estado)
  39. {
  40.     this->ec = estado;
  41. }
  #3 (permalink)  
Antiguo 13/04/2011, 03:07
 
Fecha de Ingreso: octubre-2009
Mensajes: 13
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Problema de novato con clases

Perfecto, muchas gracias

Etiquetas: clases
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:21.