Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: yawin en 24 Octubre 2015, 12:13 pm



Título: [Resuelto] Problemas con las declaraciones
Publicado por: yawin en 24 Octubre 2015, 12:13 pm
Hola a todos. Estoy haciendo un motor para videojuegos con la librería SDL y estoy con problemas. El caso es que tengo una clase llamada Engine que es quien controla la ejecución del motor: si está encendido, la creación de la ventana, la gestión de los procesos internos del juego, etc...

Código fuente: https://github.com/yawin123/SDLEngine/tree/master/include

Una de las cosas que he metido en esta clase Engine es un vector<process *> llamado taskManager. Por resumir, los distintos procesos que se den dentro dle juego (enemigos, protagonista, efectos, etc...) heredarán de la clase process y estarán almacenados en esa lista (de forma que podré actualizarlos secuencialmente, etc...).

El problema me surje cuando a esta clase process le añado un miembro "Engine *e;" para guardar un puntero al motor y poder así comunicarse con éste. El compilador me devuelve:

Código:
||=== Build: Debug in MotorSDL (compiler: GNU GCC Compiler) ===|
include/process.h | 10 | error: expected ‘)’ before ‘*’ token
include/process.h | 19 | error: ‘Engine’ has not been declared
include/process.h | 21 | error: ‘Engine’ does not name a type
include/process.h |      | In member function ‘void process::setEngine(int*)’:
include/process.h | 19 | error: ‘engine’ was not declared in this scope
||=== Build failed: 4 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

Entiendo que ocurre porque quiero usar Engine sin declararlo antes. Pero si pongo Engine antes, entonces a este se encuentra con process sin declarar. Y no se cómo arreglarlo.


Título: Re: Problemas con las declaraciones
Publicado por: ivancea96 en 24 Octubre 2015, 12:44 pm
En el header de process puedes poner al rpincipio: "class Engine;", sin más. Ya luego en el cpp pones lo que necesites.


Título: Re: Problemas con las declaraciones
Publicado por: yawin en 24 Octubre 2015, 15:40 pm
O.O muchas gracias! Funciona perfectamente.