problema con las clases heredadas y abstractas
Publicado por gothmog (12 intervenciones) el 09/02/2003 01:28:14
Buenas, hasta ahora solo habia trabajado con una o dos clases, pero ahora estoy varias que heredan de una misma clase padre. El problema que tengo es que al incluir una clase hija, se declara automaticamente la clase padre, por lo que si incluyo otra clase hija, me da error de que se ha declarado dos veces la clase padre. No se si me explico.
Yo tengo
class Padre{
// ...
public:
virtual m1() = 0{}
}
class Hija1:public Padre{
// ...
public:
m1(){ // codigo}
}
class Hija2:public Padre{
// ...
m1(){ // codigo}
}
Esto en tres archivos distintos .h
Cuando en el .cpp principal pongo:
#include <Hija1.h> // Aqui ya me incluye a Padre.h Por tanto si pongo:
#include <Hija2.h> // Me da error
Sin embargo necesito usar ambas clases.
Tb me he dado cuenta que si en la clase Padre por ejemplo pongo '#include <iostream.h>' y luego la uso en el .cpp principal, no me hace falta volver a incluir el iostream. Sin embargo, si pongo el incluir no me da error. Cosa que si me hace con mis propias clases. Que hago para evitar ese error de duplicacion?
Me parece que todo ronda hacia el mismo tema, pero no lo veo muy claro, a ver si alguien pudiera echarme una mano.
P.D.: Aunque no me he parado a pensarlo demasiado, supongo que esto tendria facil solucion usando polimorfismo. El problema es que se supone que todavia no se polimorfismo, de modo que tengo que obviar su existencia.
Gracias por las respuestas.
Yo tengo
class Padre{
// ...
public:
virtual m1() = 0{}
}
class Hija1:public Padre{
// ...
public:
m1(){ // codigo}
}
class Hija2:public Padre{
// ...
m1(){ // codigo}
}
Esto en tres archivos distintos .h
Cuando en el .cpp principal pongo:
#include <Hija1.h> // Aqui ya me incluye a Padre.h Por tanto si pongo:
#include <Hija2.h> // Me da error
Sin embargo necesito usar ambas clases.
Tb me he dado cuenta que si en la clase Padre por ejemplo pongo '#include <iostream.h>' y luego la uso en el .cpp principal, no me hace falta volver a incluir el iostream. Sin embargo, si pongo el incluir no me da error. Cosa que si me hace con mis propias clases. Que hago para evitar ese error de duplicacion?
Me parece que todo ronda hacia el mismo tema, pero no lo veo muy claro, a ver si alguien pudiera echarme una mano.
P.D.: Aunque no me he parado a pensarlo demasiado, supongo que esto tendria facil solucion usando polimorfismo. El problema es que se supone que todavia no se polimorfismo, de modo que tengo que obviar su existencia.
Gracias por las respuestas.
Valora esta pregunta


0