personaje, el 20 de diciembre a las 13:43 me escribiste:
> > No. Y no tiene sentido, cuando llames a c.Run(1) a cual llama? Y si no
> > llamás a los Run del padre, menos sentido le veo.
> 
> la idea es así:
> 
> A* pa;
> B* pb;
> C* pc = new C;
> 
> pa = pc;
> pb = pc;
> 
> pa->Run(); // corre la versión A
> pb->Run(); // corre la versión B

Entonces vos no querés que sea virtual! El virtual es justamente lo que
hace que pa->Run() llame a C::Run en vez de a A::Run!

> > Yo creo que tu principal problema no como catso te metiste en una
> > situación donde tenés herencia múltiple, con 2 métodos con el mismo nombre
> > en las clases padres y *encima* querés llamar a cada uno de ellos con una
> > virtualidad mágica inexistente =P
> 
> tengo un template, con 2 especializaciones, y una clase que hereda de
> las dos especializaciones...

No lo hagas virtual y vas a obtener el resultado que buscás, por obscuro
que sea =P

Ejemplo funcionando:

#include <cstdio>

struct A
{
        const char* n;
        A(const char* n): n(n) { printf("A::A(%s)\n", n); }
        ~A() { printf("A::~A(%s)\n", n); }
        void f() { printf("A::f()\n"); }
};

struct B
{
        const char* m;
        B(const char* m): m(m) { printf("B::B(%s)\n", m); }
        ~B() { printf("B::~B(%s)\n", m); }
        void f() { printf("B::f()\n"); }
};

struct C: A, B
{
        C(const char* n): A(n), B(n) { printf("C::C(%s)\n", n); }
        ~C() { printf("C::~C(%s)\n", n); }
};

int main()
{
        A* pa;
        B* pb;
        C c("c");
        pa = &c;
        pb = &c;
        pa->f();
        pb->f();
        return 0;
}


-- 
Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
----------------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------------
Si ella es la flor, yo soy la espina
Si ella es quien florece, yo quien se marchita
Y estamos en eclipse total, y estamos en eclipse total
Completamente cruzados, completamente cruzados
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a