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

Error en la herencia

Estas en el tema de Error en la herencia en el foro de C/C++ en Foros del Web. A ver muchachos si me pueden ayudar, no puedo sacar estos errores sal2. Aca esta el codigo #include <iostream> #include <string> using namespace std; class ...
  #1 (permalink)  
Antiguo 21/09/2009, 11:04
 
Fecha de Ingreso: diciembre-2007
Mensajes: 41
Antigüedad: 16 años, 5 meses
Puntos: 0
Sonrisa Error en la herencia

A ver muchachos si me pueden ayudar, no puedo sacar estos errores sal2.
Aca esta el codigo

#include <iostream>
#include <string>

using namespace std;

class persona
{
string nombre,apellido,email,direccion,tel;
int dni;
public:
persona(void){}

void setnombre(string n)
{
this->apellido=n;
}

void setapellido(string n)
{
this->apellido=n;
}

void setemailp(string n)
{
this->email=n;
}
void setdireccion(string n)
{
direccion=n;
}

void settel(string n)
{
this->tel=n;
}

void setdni(int n)
{
this->dni=n;
}

string getnombre()
{
return this->apellido;
}

string getapellido()
{
return this->apellido;
}

string getemailp()
{
return this->email;
}
string getdireccion()
{
return this->direccion;
}

string gettel()
{
return this->tel;
}

int getdni()
{
return this->dni;
}

~persona(void){}
};

#include <iostream>
#include <string>


using namespace std;

class empleado: public persona{
int nleg,ninterno;
string sucursal,puesto,email;
public:
empleado(void){}

void setnleg(int n)
{
this->nleg=n;
}

void setninterno(int n)
{
this->ninterno=n;
}

void setsucursal(string n)
{
this->sucursal=n;
}

void setpuesto(string n)
{
this->puesto=n;
}
void setemailc(string n)
{
this->email=n;
}

int getnleg()
{
return this->nleg;
}

int getninterno()
{
return this->ninterno;
}

string setsucursal()
{
return this->sucursal;
}

string getpuesto()
{
return this->puesto;
}
string getemailc()
{
return this->email;
}

~empleado(void){}
};

#include <iostream>
#include <string>


using namespace std;

class empresa
{
empleado * empleados[50];
int cantempleados;

public:
empresa(void){this->cantempleados=0;}

void ingresaempleado(void)
{
empleados[cantempleados]=new empleado();
empleado *emp=empleados[cantempleados];
string entrada;
char stringentrada[100];

cout<<"Ingrese su nombre";
cout<<flush;
cin>>stringentrada;
entrada=stringentrada;
emp->setnombre(entrada);

cout<<"Ingrese su apellido";
cout<<flush;
cin>>stringentrada;
entrada=stringentrada;
emp->setapellido(entrada);

cout<<"Ingrese su dni";
cout<<entrada;
emp->setdni(atoi(entrada.c_srt()));

cout<<"Ingrese su direccion";
cout<<flush;
cin>>stringentrada;
entrada=stringentrada;
emp->setdireccion(entrada);

cout<<"Ingrese su telefono";
cout<<flush;
cin>>stringentrada;
entrada=stringentrada;
emp->settel(entrada);

cout<<"Ingrese su email personal";
cout<<flush;
cin>>stringentrada;
entrada=stringentrada;
emp->setemailp(entrada);

cout<<"Ingrese su numero de legajo";
cin>>entrada;
emp->setnleg(atoi(entrada.c_str()));

cout<<"Ingrese su puesto";
cout<<flush;
cin>>stringentrada;
entrada=stringentrada;
emp->setpuesto(entrada);

cout<<"Ingrese sucursal donde trabaja";
cout<<flush;
cin>>stringentrada;
entrada=stringentrada;
emp->setsucursal(entrada);

cout<<"Ingrese su numero interno";
cin>>entrada;
emp->setninterno(atoi(entrada.c_str()));

cout<<"Ingrese su email corporativo";
cin>>stringentrada;
entrada=stringentrada;
emp->setemailc(entrada);

this->cantempleados++;
}

void imprimirpuesto(void)
{
empleado *emp;
for (int i=0;i<this->cantempleados;i++)
{
emp=empleados[this->cantempleados];
count<<"\nNombre\n"<<emp->getnombre()<<"Apellido\n"<<emp->getapellido()<<"Dni\n"<<emp->getdni()<<"Direccion\n"<<emp->getdireccion()<<"Telefono\n"<<emp->gettel()<<"Email perosonal\n"<<emp->getemailc()<<"Numero de legajo\n"<<emp->getnleg()<<"Puesto\n"<<emp->getpuesto()<<"Sucursal\n"<<emp->getninterno()<<"Email corporativo\n"<<emp->getemailc()<<endl;
}
}
~empresa(void){}
};

#include <iostream>
#include <string>
#include "empresa.h"
#include "empleado.h"
#include "persona.h"

int main (void)
{
int entrada;
empresa *emp;

do
{
cout<<"Ingrese 1. Cargar empleado\n2. Ver empleados\n3. Salir";
cin>>entrada;
if (entrada==1)
{
emp->ingresaempleado();
}
else
{
emp->imprimirpuesto();
}
}while (entrada!=3);

system ("Pause");
return 0;
}

Última edición por lucashard; 21/09/2009 a las 17:14
  #2 (permalink)  
Antiguo 22/09/2009, 05:37
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Error en la herencia

El problema con la herencia se da por estar incluyendo los archivos en el orden opuesto.

Código:
#include "persona.h"
#include "empleado.h"
#include "empresa.h"
Despues tenes un par de errores de tipeo (count por cout y c_srt por c_str).

Con eso compila aunque hay un warning fundamental: warning C4700: uninitialized local variable 'emp' used.

emp es un puntero indefinido y lo usas inmediatamente asi que el programa falla sin remedio.

Código:
empresa *emp = new empresa;
Otro error en imprimirpuesto, tenes un bucle donde la variable contador es i y usas la cantidad de empleados en su lugar, mejor asi:

Código:
emp=empleados[i];

Asi mas o menos funcionara algo, depuralo.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 22/09/2009, 20:04
 
Fecha de Ingreso: diciembre-2007
Mensajes: 41
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Error en la herencia

no me imprime nunca lo de imprimir unidades, hago como me lo decis vos y no me imprime nada, desde ya muchas gracias
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 18:35.