Duda Acerca de Herencia

Iniciado por Gerik, 28 Abril 2010, 06:28 AM

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

Gerik


digamos: xD

Class padre{public:
                  capturar();}
class hija:Public padre{capturar();}

main()
  {hija ob;
   ob.capturar();}

mi duda es como llamar la funcion capturar del padre desde el main con la clase hija

Agradezco su pronta Respuesta 

Littlehorse

Si esta definida en la clase base, podrás acceder desde la derivada (al menos que el miembro sea privado), así que lo único que tienes que hacer es llamarla.

Por ejemplo:

Podes desambiguar directamente en la definición de la clase y hacer algo así:

Código (cpp) [Seleccionar]
class hija:public padre
{
public:
void capturar()
     {
      padre::capturar(); 
     }
};



O no hacer lo anterior y llamarla directamente desambiguando otra vez (con ::), con el objeto de la clase derivada.

Código (cpp) [Seleccionar]

hija obj;
obj.capturar();//Metodo publico, clase derivada
obj.padre::capturar();//Metodo publico, clase base     



De todas maneras hay que tener cuidado sobre este tipo de practicas ya que C++ permite herencia múltiple, por lo tanto las definiciones de los métodos pueden tornarse ambiguas.
En el caso que uses Visual Studio tal vez puedas usar el keyword __super, pero por supuesto esto solo es Microsoft specific.

Te recomiendo leer sobre funciones virtuales para que tengas una idea de como podes aprovechar un poco mas este tipo de situaciones.


Saludos!
An expert is a man who has made all the mistakes which can be made, in a very narrow field.