Con polimorfismo no se, pero puedes probar lo que funciona sin polimorfismo y que sirve para incluir clases en otras: incluyes las cabeceras de las clases derivadas en la cabecera de la base, luego declaras clases nulas derivadas en la cabecera de la base, luego vas a cada derivada e incluyes la cabecera de la base, declaras una base nula en cada derivada y de alguna forma (en el constructor, en una funcion set_loquesea) desde la base envias un puntero this a las derivadas; de esa forma las derivadas pueden accecer a la base. Creo que lo veras mejor con un ejemplo que con esta mie.. de explicacion que acabo de poner :)
Código C++:
Ver original//cjuego.h
#include "cball.h"
class CBall;//declaro una clase nula de la clase implementada en cball.h
class CJuego {
public:
CJuego();
~CJuego();
private:
CBall *c_ball;
};
Código C++:
Ver original//cjuego.cpp
#include "juego.h"
CJuego::CJuego() {
c_ball = new CBall(this);
}
Código C++:
Ver original//cball.h
#include "cjuego.h"
class CJuego;//declaro una clase nula de la clase implementada en CJuego
class CBall {
public:
CBall(CJuego *);
private:
CJuego *c_juego;
};
Código C++:
Ver original//cball.cpp
#include "cball.h"
CBall::CBall(CJuego *ptr_cjuego) {
c_juego = ptr_cjuego;
}
Puedes ponerlo en todas las clases que quieras acceder a la base; de esta forma desde el puntero c_juego puedes acceder a los metodos publicos de la clase CJuego desde las clases derivadas.
Saludos
vosk