que - punteros c++ pdf
¿Pasa el puntero a la clase derivada, a la función que espera puntero a la clase base? (1)
DE ACUERDO. No soy muy bueno en polimorfismo en C ++, pero ahora tengo un problema. Imagina estas clases:
class Parent {
public:
Parent();
virtual ~Parent();
};
class Child : public Parent
{
public:
Child();
};
class Director
public:
Director();
void doStuff(Parent* p);
};
// Assume we have a instance of Director, and call the doStuff function here:
doStuff(new Child()); // Gives error
Me sale el error
no puede convertir el parámetro 1 de ''Niño *'' a ''Padre *''
Y mi pregunta simple es, ¿POR QUÉ esto no funciona? ¿Debo hacer algún tipo de casting o qué, o cuál es el problema?
EDITAR: pongo todos mis archivos aquí tal como están. Creo que el problema radica en mis inclusiones, ya que realmente no tengo idea de cómo se supone que se debe hacer con #ifndef y tal. Por favor, échales un vistazo.
Director.h: http://pastebin.com/2uJqezju
Director.cpp: http://pastebin.com/SZ6cuBJC
IApp.h: http://pastebin.com/euCAwpnL
IApp.cpp: http://pastebin.com/JHDuQUhW
IScene: h: http://pastebin.com/cweH9G6p
IScene.cpp: http://pastebin.com/9epW0dRA
Luego, he creado algunas instancias de esto:
GameApp.h (hereda EDGE :: IApp): http://pastebin.com/QbjbVqSi
GameApp.cpp: http://pastebin.com/sYJvmbeP
GameScene.h (hereda EDGE :: IScene): http://pastebin.com/K1WYNvRf
GameScene.cpp: http://pastebin.com/uJx3FLBW
No tengas miedo de echarles un vistazo, realmente hay como 10 líneas de código en cada uno de ellos. Pero el problema está en GameApp.cpp, donde intento crear una instancia de GameScene y pasarla al Director-> createNewScene (escena IScene *).
Director.h:
class IScene;
debe estar dentro del espacio de nombres