C++: Problema compilar clases [Resuelto]

Resulta que estoy programando un juego en C++ y tengo varias clases. Una de ellas la uso como "motor" y contiene todas las instancias de mapas, monigotes, la pantalla... etc.

El caso es que he hecho un nuevo objeto el cual usa varios de esos datos por lo que le he puesto un atributo que es un puntero a la instancia de "motor", y aquí viene el problema, al compilar. Resulta que una clase A tiene un atributo de un objeto de clase B, y ésta clase B uno de la A... y evidentemente cuando empieza a compilar una la otra aún no está definida.

Bueno, puedo cambiar un poco el diseño actual porque seguramente se pueda hacer mejor, e incluso pasarle los punteros sueltos de lo que necesita, pero aunque sea por curiosidad, me gustaría saber si se puede conseguir esto en C++.


Uso g++ en Linux y compilo con un Makefile que he hecho, kizir, que primero compilo clases por separado como código objeto y luego la aplicación (por si ayuda).

Gracias por adelantado [ginyo]

Nota: Para que quede claro, lo de las clases sería:
class A{
...
B *pb;
...
};
class B{
...
A *pa;
...
};
Para estos casos tienes que hacer una predeclaracion de la clase que vas a usar

a.h
#ifndef A_H
#define A_H
class B;
#include "b.h"
class A {
   B *pb;
};
#endif


b.h
#ifndef B_H
#define B_H
class A;
#include "a.h"
class B {
  A *pa;
};
#endif
Hoy uno de mi clase a acabado el hundir la flota programado en c++, era para verlo XD
3 respuestas