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

C++ Linux AYUDA!

Estas en el tema de C++ Linux AYUDA! en el foro de C/C++ en Foros del Web. Hola, me he topado con un problema al intentar compilar un programa, el código en si es referente a la utilización de clases, utilizo el ...
  #1 (permalink)  
Antiguo 27/07/2008, 00:38
 
Fecha de Ingreso: julio-2008
Mensajes: 2
Antigüedad: 15 años, 9 meses
Puntos: 0
C++ Linux AYUDA!

Hola, me he topado con un problema al intentar compilar un programa, el código en si es referente a la utilización de clases, utilizo el compilador g++ y el editor gedit, el codigo en cuestion es este:
Cita:
#include<iostream>
class empleado
{
public: /*Datos publicos de la clase*/
empleado (int edInicial, int anoSerInicial, float salInicial); //Llamado a constructor
~empleado(); //Llamado a destructor
int recEdad();
void asigEdad(int edad);
int recAnos();
void asigAnos(int anosServicio);
int recSalario();
void asigSalario(float salario);
private: /*Datos privados de la clase*/
int suEdad;
int susAnosServicio;
float suSalario;
};

//Constructor de empleado
empleado::empleado(int edInicial, int anoSerInicial, float salInicial)
{
suEdad = edInicial;
susAnosServicio = anoSerInicial;
suSalario = salInicial;
}
//Destructor
empleado::~empleado()
{
}

int empleado::recEdad()
{
return suEdad;
}

void empleado::asigEdad(int edad)
{
suEdad = edad;
}

int empleado::recAnos()
{
return susAnosServicio;
}

void empleado::asigAnos(int anosServicio)
{
susAnosServicio = anosServicio;
}

int empleado::recSalario()
{
return suSalario;
}

void empleado::asigSalario(float salario)
{
susAnosServicio = salario;
}

int main () //Funcion principal
{
empleado Gerardo;
Gerardo.asigEdad(22);
Gerardo.asigAnos(1);
Gerardo.asigSalario(1500.20);
std::cout<<"\nEmpleado: Gerardo Herzchell Torres Ruiz. \n"<<std::endl;
std::cout<<"Su edad es de "<<Gerardo.asigEdad()<<" años."<<std::endl;
std::cout<<"\nTiene "<<Gerardo.asigAnos()<<" años trabajando en la empresa.\n"<<std::endl;
std::cout<<"Su salario actual es de "<<Gerardo.asigSalario()<<"pesos.\n"<<std::end l;
return 0;
}
y el error de consola es:

Cita:
herzchell@Brain:/media/Storage/PROGRAMACION$ g++ clases.c++ -o clases && ./clases
clases.c++: In function ‘int main()’:
clases.c++:63: error: no se encontró una función coincidente para la llamada a ‘empleado::empleado()’
clases.c++:20: nota: los candidatos son: empleado::empleado(int, int, float)
clases.c++:3: nota: empleado::empleado(const empleado&)
clases.c++:68: error: no se encontró una función coincidente para la llamada a ‘empleado::asigEdad()’
clases.c++:36: nota: los candidatos son: void empleado::asigEdad(int)
clases.c++:69: error: no se encontró una función coincidente para la llamada a ‘empleado::asigAnos()’
clases.c++:46: nota: los candidatos son: void empleado::asigAnos(int)
clases.c++:70: error: no se encontró una función coincidente para la llamada a ‘empleado::asigSalario()’
clases.c++:56: nota: los candidatos son: void empleado::asigSalario(float)
herzchell@Brain:/media/Storage/PROGRAMACION$
¿Por favor ayúdenme si?
  #2 (permalink)  
Antiguo 27/07/2008, 05:12
Avatar de Xinef  
Fecha de Ingreso: marzo-2007
Mensajes: 202
Antigüedad: 17 años, 1 mes
Puntos: 7
Respuesta: C++ Linux AYUDA!

Te falta el constructor vacío.


Además... estás usando los métodos de asignación para recoger los datos para mostrarlos en consola. Vamos, que estás usando asigX en vez de recX...

Hay otro error en el último cout... has puesto un espacio en blanco en endl.

El método que asigna el salario al objeto, estás actualizando los años trabajados... :P

Y el método que devuelve el salario... lo hace como int... sería más correcto que fuera float.

Última edición por Xinef; 27/07/2008 a las 05:27 Razón: Comentar cosillas del código.
  #3 (permalink)  
Antiguo 27/07/2008, 20:57
 
Fecha de Ingreso: julio-2008
Mensajes: 2
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: C++ Linux AYUDA!

Disculpen, en este caso como se utiliza el constructor vacio?, apenas comence este tema y me vendria bien un poco de ayuda, Gracias Xinef
  #4 (permalink)  
Antiguo 28/07/2008, 08:51
Avatar de Xinef  
Fecha de Ingreso: marzo-2007
Mensajes: 202
Antigüedad: 17 años, 1 mes
Puntos: 7
Respuesta: C++ Linux AYUDA!

Cita:
Iniciado por Herzchell Ver Mensaje
Disculpen, en este caso como se utiliza el constructor vacio?, apenas comence este tema y me vendria bien un poco de ayuda
Al instanciar el objeto de tipo empleado (acostúmbrate a poner el nombre de las clases con mayúscula inicial) de la forma que lo haces estás llamando al constructor vacío.

Para implementarlo, lo haces como cualquier otro constructor sin especificar parámetros:

Código PHP:
   public empleado() {
      
//aquí haces lo que quieras. Inicializar atributos de la clase, llamar al constructor de una clase padre, etc, etc.
   

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 17:13.