elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda sobre herencia en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda sobre herencia en C++  (Leído 2,446 veces)
NekoOs

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Duda sobre herencia en C++
« en: 16 Septiembre 2012, 00:09 am »

La duda es la siguiente digamos que en una clase padre yo poseo el siguiente esquema:
ahora bien en una clase hijo que pose la siguiente estructura:

la cuestión es que al momento de implementar necesito el resultado del método Funcion() y el getEjemplo() en el método Funcion_h().
asi:

Código
  1. Tipo hijo::Funcion_h ( ) {
  2. return Funcion()+getEjemplo(); //es solo un ejemplo
  3. }


La pregunta es como hago ya he intentado las siguientes sintaxis:
Código
  1. padre::getEjemplo()
  2. padre.getEjemplo()
  3. Tipo hijo::Funcion_h ( ) : getEjemplo() {
  4. return Funcion()+getEjemplo(); //es solo un ejemplo
  5. }
se que no es asi pero aja uno nunca sabe  ;D
Les agradeceria me ayudaran urgentemente es un proyecto  :silbar:
Gracias de antemano...


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Duda sobre herencia en C++
« Respuesta #1 en: 16 Septiembre 2012, 00:18 am »

Igual es que no has heredado bien la clase , si no es lo que quieres vuelve a postear y detalla más lo que quieres  :)
Código
  1. class padre
  2. {
  3.    public:
  4.    int funcion();
  5.    int getEjemplo();
  6.    int setEjemplo();
  7. };
  8. class hijo : public padre//Aquí es donde se hereda la clase padre
  9. {
  10.    public:
  11.    int funcion_h()
  12.    {
  13.        return funcion()+getEjemplo();
  14.    }
  15. };
¡Un saludo!


« Última modificación: 16 Septiembre 2012, 00:23 am por avesudra » En línea

Regístrate en
NekoOs

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Duda sobre herencia en C++
« Respuesta #2 en: 17 Septiembre 2012, 19:21 pm »

Gracias por responder, sin embargo esto que has planteado lo tengo claro y aun asi no se por que no funciona mira, pues que te digo publicare la secuencia de los archivos a ver si vez donde esta el inconveniente:

padre.h
Código
  1. #ifndef PADRE_H
  2. #define PADRE_H
  3.  
  4. class padre {
  5. Tipo Ejemplo;
  6. private:
  7. protected:
  8. public:
  9. padre();
  10. ~padre();
  11. void setEjemplo(Tipo E);
  12. Tipo getEjemplo();
  13. Tipo Funcion();
  14. };
  15.  
  16. #endif

padre.cpp
Código
  1. #include "padre.h"
  2.  
  3. padre::padre() {
  4.  
  5. }
  6.  
  7. padre::~padre() {
  8.  
  9. }
  10.  
  11.  
  12. void padre::setEjemplo (Tipo E) {
  13. Ejemplo=E;
  14. }
  15.  
  16. Tipo padre::getEjemplo ( ) {
  17. return Ejemplo;
  18. }
  19.  
  20. Tipo padre::Funcion ( ) {
  21. return operacion_que_emplea(Ejemplo);
  22. }

hijo.h
Código
  1. #ifndef HIJO_H
  2. #define HIJO_H
  3. #include "padre.h"
  4.  
  5. class hijo : public padre {
  6. private:
  7. protected:
  8. public:
  9. hijo();
  10. ~hijo();
  11. Tipo Funcion_h();
  12. };
  13.  
  14. #endif

hijo.cpp
Código
  1. #include "hijo.h"
  2.  
  3. hijo::hijo() {
  4.  
  5. }
  6.  
  7. hijo::~hijo() {
  8.  
  9. }
  10.  
  11.  
  12. Tipo hijo::Funcion_h ( ) {
  13. return Funcion()+getEjemplo(); //es solo un ejemplo
  14. }

main.cpp
Código
  1. #include<iostream>
  2. #include "hijo.h"
  3. #include "padre.h"
  4. using namespace std;
  5.  
  6. int main () {
  7. hijo h;
  8. padre p;//tengo entendido que no hay necesidad de declarar la clase padre si sus funciones estan incluidas en hijo sin embargo en el original yo lo nombro
  9. Tipo x; //declaracion de parametros
  10. cout << "Digite el parametro: ";
  11. cin >> x;
  12. p.setEjemplo(x);
  13. cout << p.getEjemplo(); //escribe perfecto
  14. cout << h.getEjemplo(); //se supone que deberia ser el mismo resultado cosas que he intentado:
  15. //cout << h::p.getEjemplo();
  16. //cout << h->padre.getEjemplo();
  17. //y varias mas que se qui ni al caso...
  18. cout << h.Funcion_h(); // ademas tambien necesito calcular esto y depende de padre
  19. return 0;
  20. }

Realmente necesito ayuda urgente el proyecto en pasado mañana y estoy quedado solo en ese pedacito se que es algo que estoy omitiendo y quizas sencillo de solucionar, del resto no poseo muchas dudas :huh:
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Duda sobre herencia en C++
« Respuesta #3 en: 17 Septiembre 2012, 19:42 pm »

Es que los tipos clase padre y clase hijo son diferentes , es decir:
Código
  1. padre p;
  2. hijo h;//Desde h no puedes acceder a p. h es un tipo con herencia de la clase de p , pero no puede acceder a él.
Digamos que la clase hijo , es una extensión a la clase padre , pero una clase hijo no puede controlar a una clase padre que sean objetos distintos
« Última modificación: 17 Septiembre 2012, 19:47 pm por avesudra » En línea

Regístrate en
NekoOs

Desconectado Desconectado

Mensajes: 18


Ver Perfil
Re: Duda sobre herencia en C++
« Respuesta #4 en: 18 Septiembre 2012, 00:42 am »

Gracias ahora empiezo a entender puedo usar las ecuaciones que poseo en la clase padre pero debe introducir yo los parámetros no puedo usar los últimos parámetros empleados en la clase padre  :-(

empece haciendo pruebas donde llamada de esta manera a un método de la clase padre para ello inicie en el constructor de la clase padre un valor cualquiera y este era la respuesta

padre.cpp
Código
  1. padre::padre() {
  2. Ejemplo=parametro;
  3. }


main.cpp
Código
  1. p.setEjemplo(x); //usando esta asignación, no se imprimía el valor deseado
  2. h.padre::setEjemplo(x); // esta resulto perfecta
  3. cout << h.padre::getEjemplo();

pero esto significa que si tuviese varios metodos tendria entonces que hacer:
padre.cpp
Código
  1. padre::padre() {
  2. Ejemplo=parametro; // esto generalmente sera inicializado en cero
  3.        Ejemplo2=parametro;
  4. }


main.cpp
Código
  1. p.setEjemplo(x); //usando esta asignación, no se imprimía el valor deseado
  2. h.padre::setEjemplo(x); // esta resulto perfecta
  3. h.padre::setEjemplo2(x); // para luego poder llamarlo por medio de hijo
  4. cout << h.padre::getEjemplo();
  5. cout << h.padre::getEjemplo2();
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda Acerca de Herencia
Programación C/C++
Gerik 1 2,628 Último mensaje 28 Abril 2010, 09:28 am
por Littlehorse
Pregunta sobre herencia en SmallTalk
Programación General
astinx 0 2,633 Último mensaje 20 Febrero 2012, 22:32 pm
por astinx
Pregunta sobre herencia y polimorfismo
Programación C/C++
Rodrigosolari 2 2,451 Último mensaje 6 Mayo 2012, 08:51 am
por Rodrigosolari
Duda sobre el tema de Herencia en c++
Programación C/C++
maikelowen 3 2,059 Último mensaje 10 Abril 2014, 21:51 pm
por maikelowen
Consulta sobre herencia y cómo proceder
Programación C/C++
Cero++ 6 2,083 Último mensaje 26 Diciembre 2018, 02:29 am
por CalgaryCorpus
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines