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 */
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.
/*
* 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 */
/*
* 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 */
/*
* 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() {}
/*
* 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() {}
/*
* 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
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 ^^
muchas gracias ! ;-) ya lo he entendido,aparte lo he empezado a hacer de cero y me ha salido.
Un saludo.