Duda sobre el tema de Herencia en c++

Iniciado por maikelowen, 10 Abril 2014, 19:47 PM

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

maikelowen

Hola,soy principiante en esto de la programación y llevo un un buen rato intentando ver donde tengo el fallo pero no hay manera... no consigo establecer la herencia entre las dos clases que he creado y que esta clase derivada ,en mi caso "Empleado" incluya los atributos de mi clase principal "Persona".
¿Podríais echarle un vistazo a  ver donde tengo el fallo? :huh:
-Utilizo netbeans- 
Un saludo y gracias de antemano.

/*
* File:   main.cpp
* Author: Owen10
*
* Created on 10 de abril de 2014, 18:44
*/

#include <cstdlib>
#include <iostream>

#include "Persona.h"
#include "Empleado.h"

using namespace std;

/*
*
*/
int main(int argc, char** argv) {

    Persona p("Owen");

   
   

    Empleado e;
   
   cout<< e.nombre;
   
   
}



/*
* File:   Empleado.cpp
* Author: Owen10
*
* Created on 10 de abril de 2014, 18:50
*/

#include "Empleado.h"



Empleado::Empleado(const Empleado& orig) {
}

Empleado::~Empleado() {
}

Empleado::Empleado():Persona(nombre){
   


/*
* File:   Empleado.h
* Author: Owen10
*
* Created on 10 de abril de 2014, 18:50
*/

#ifndef EMPLEADO_H
#define   EMPLEADO_H
#include "Persona.h"

#include <iostream>
using namespace std;


class Empleado: public Persona{
   
public:
    Empleado();
    Empleado(const Empleado& orig);
    virtual ~Empleado();
   
    Empleado();
private:

   
   
};




/*
* File:   Persona.cpp
* Author: Owen10
*
* Created on 10 de abril de 2014, 18:45
*/

#include "Persona.h"


Persona::Persona(string Nombre){
    Nombre=nombre;
}


Persona::Persona(){
   
   
   
}

Persona::Persona(const Persona& orig) {
}

Persona::~Persona() {
}



/*
* File:   Persona.h
* Author: Owen10
*
* Created on 10 de abril de 2014, 18:45
*/

#ifndef PERSONA_H
#define   PERSONA_H

#include <iostream>
using namespace std;

class Persona {
public:
 
    Persona();
    Persona(const Persona& orig);
    virtual ~Persona();
    Persona(string Nombre);
   
   
string nombre;
    int edad;
   
   
   
private:
   

};

#endif   /* PERSONA_H */

vangodp

#1
Bueno no es que sea un fiera en herencia pero intente arreglar lo que vi... y son unos cuantos errores.
Paso los archivos para que veas.
Tienes que crear un proyecto en codeblocks por ejemplo para que te compile correctamente.

Código (cpp) [Seleccionar]

/*
* File:   Persona.h
* Author: Owen10
*
* Created on 10 de abril de 2014, 18:45
*/

#ifndef PERSONA_H
#define PERSONA_H

#include <iostream>
using namespace std;

class Persona {
public:

Persona();
virtual ~Persona();
Persona ( const Persona & orig );
Persona ( string unNombre );


string suNombre;
int suEdad;

private:


};
#endif   /* PERSONA_H */


Código (cpp) [Seleccionar]

/*
* File:   Empleado.h
* Author: Owen10
*
* Created on 10 de abril de 2014, 18:50
*/

#ifndef EMPLEADO_H
#define EMPLEADO_H
#include "Persona.h"

#include <iostream>
using namespace std;


class Empleado: public Persona {

public:
Empleado();
       Empleado( string unNombre );
Empleado ( const Empleado & orig );
virtual ~Empleado();

private:

};
#endif /* EMPLEADO_H */


Código (cpp) [Seleccionar]

/*
* File:   Persona.cpp
* Author: Owen10
*
* Created on 10 de abril de 2014, 18:45
*/

#include "Persona.h"

Persona::Persona() {}

Persona::Persona ( string unNombre ) { suNombre = unNombre; }

Persona::Persona ( const Persona & orig ) {}

Persona::~Persona() {}


Código (cpp) [Seleccionar]

/*
* File:   Empleado.cpp
* Author: Owen10
*
* Created on 10 de abril de 2014, 18:50
*/

#include "Empleado.h"

Empleado::Empleado( string unNombre ) : Persona ( unNombre ) {}
Empleado::Empleado ( const Empleado & orig ) {}
Empleado::~Empleado() {}


Código (cpp) [Seleccionar]

/*
* File:   main.cpp
* Author: Owen10
*
* Created on 10 de abril de 2014, 18:44
*/

#include <cstdlib>
#include <iostream>

#include "Persona.h"
#include "Empleado.h"

using namespace std;

/*
*
*/
int main ( int argc, char ** argv ) {
Empleado e("romoardo");
cout << e.suNombre;
}


Lo errores había de todo los tipos XDD
Faltaba algunos cierre de llaves también.

Compara el código con el tuyo y ya veras que errores hay.
Si tienes duda pues sigue preguntando.

La herencia ya funciona, como ves he creado un objeto tipo Empleado y le asigno un nombre. Si vas a la clase veras que no tiene la variable miembro suNombre, la recibe de la clase persona ;)
Espero que te compile bien :D
Si necesitas el proyecto te lo subo también pero creo que no hace falta, solo creas un proyecto vació agregas todos los archivos y después marque que compile solo los .cpp
Suerte. :D

Ahora intenta pasar como privado las variables de la clase persona. Las variables no deben ser publicas, como minimo protected

amchacon

No es necesario que pongas el constructor copia/destructor si no lo vas a implementar. Ya lo hace el compilador por ti.

De hecho aqui es contraproducente. Prueba a hacer una copia del objeto, a ver si lo copia bien ^^
Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar

maikelowen

muchas gracias !  ;-) ya lo he entendido,aparte lo he empezado a hacer de cero y me ha salido.

Un saludo.