emmm lo que pasaste compila[1]...
las clases A y B son *no* instanciables al tener metodos virtualmente puros
(alias abstractos)
fijate que el B no define el metodo M2... por lo que nunca podes tener un
objeto B instanciado
podes tirar el error del compilador?
saludos
[1]: codigo modificado
class A {
public:
virtual void M1()=0;
virtual void M2()=0;
};
class B:public A {
public:
void M1() {
std::cout << "B::M1" << std::endl;
M2();
}
};
class C:public B {
public:
void M2() {
std::cout << "C::M2" << std::endl;
}
};
int main(int argc, char *argv[])
{
A* a = new C();
a->M1();
a->M2();
delete a;
return 0;
}
salida:
B::M1
C::M2
C::M2
--------------------------------------------------
From: "Carlos Pantelides" <[EMAIL PROTECTED]>
Sent: Monday, September 08, 2008 5:43 PM
To: <[email protected]>
Subject: [Prog] consulta herencia en c++
Hola a todos:
Tengo la siguiente situación... intento delegar un comportamiento a una
clase derivada, pero...
mmh, es mas fácil que ponga el código y hable por si mismo [1]
No compila pues cuando llega a B::M1() llamando a M2, esta aun no esta
implementada.
Me resulta evidente que esto se soluciona agregando una clase más, el
pattern Strategy, pero ese es el plan B.
Por favor tengan en cuenta que vengo del mundo laxo de php, donde esto si
funciona.
Mi pregunta viene por el lado de c++. Hay manera de lograr mi cometido sin
aplicar el patttern, sin agregar clases?
[1] (en pseudo c++, omito public, parameters y return values):
class A {
public:
virtual void M1()=0;
virtual void M2()=0;
}
class B:public A {
public:
void M1() {
M2();
}
}
class C:public B {
public:
void M2() {}
}
Muchas gracias anticipadas
Carlos Pantelides
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion