personaje, el 30 de abril a las 12:28 me escribiste:
> 2008/4/30 Pablo Martín Viva <[EMAIL PROTECTED]>:
> > No lo podes hacer por algunos motivos y aca van algunos...
> >
> > 1) La herencia que definis es privada es decir que todos los metodos y
> > atributos que heredas de A son privados, y por ende no van a formar parte de
> > tu interfaz de tu clase, deberias heredar publicamente de la clase A.
>
> La herencia es de tipo pública.
>
> >
> > 2) Si queres overridear o sobreescribir el metodo Foo de la clase A en la
> > clase B dicho metodo tiene que ser definido virftual en la clase A sino por
> > mas que lo sobreescribas en la clase B si usas algo asi;
>
> No, el atributo virtual es para poder /reimplementar el mismo método/,
> yo quiero *implementar uno nuevo* con el mismo nombre y distintos
> parámetros.
>
> Fijate en los followups que me hice, usando el keyword using se
> soluciona. Sigue siendo una mala práctica, pero funciona tal cual lo
> buscaba yo.
Creo que tan solo *declarando* Foo() ya debería andar, onda:
class B: public A
{
public:
void Foo(); // solo declarado
void Foo(int) { /* definido */ }
};
El problema que puede traer exponer funciones sobrecargadas del padre está
bastante bien explicado acá:
http://www.digitalmars.com/d/2.0/hijack.html
(ver en particular "Derived Class Member Function Hijacking")
--
Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
----------------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145 104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------------
This homeless guy asked me for some money the other day.
And I was gonna give it to him but then I thought you're
just gonna use it on drugs or alcohol.
And then I thought, that's what I'm gonna use it on.
Why am I judging this poor bastard.
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion