Clase1 requiere de Clase2
Clase2 requiere de Clase3
y Clase3 requiere de Clase1
El problema es que al cortar el circulo con #pragma once o con #ifndef en una de ellas (eg. Clase3) me indica que una (Clase1) no esta declarada, y el tipo de dato es un '<error-type>'.
Ya trate de colocar las tres clases en un mismo archivo pero ocurre lo mismo, la primer clase que declaro me dice que la clase a la que estoy llamando no esta definida, cuando esta 20 lineas más abajo.
Adjunto las Interfaces de las clases, las implementaciones están en el mismo .h por comodidad
Game.h
Código:
#pragma once
#include "EntityManager.h"
class Game
{
public:
Game();
~Game();
EntityManager* manager; // En este punto tira error
int ID;
int puntos;
};
EntityManager.h
Código:
#pragma once
#include "Entity.h"
#include <list>
#include <algorithm>
class EntityManager
{
public:
EntityManager();
~EntityManager();
list<Entity*> entities; //
list<Entity*>::iterator it_entities; // En este punto no pero puede
void add_entity(Entity*);
void del_entity(Entity*);
void update_all();
void draw_all();
void rewind();
Entity* current();
Entity* next();
};
Entity.h
Código:
#pragma once
#include "game.h"
class Entity
{
public:
Game * gPtr; // En este punto tira error
Entity();
Entity(Game* g_ptr) { gPtr = g_ptr; }
virtual void init( int xo, int yo, SDL_Surface* );
virtual ~Entity();
virtual void draw(SDL_Surface*);
virtual void update();
virtual void check_Collision(Entity*);
virtual void Collision(Entity*);
int type;
bool collidable;
bool alive;
double x;
double y;
double w;
double h;
SDL_Surface * sprite;
};
Si existe algún artilugio mágico-lógico que le solucione este problema a este novato estaría agradecido en que me lo comentaran, desde ya muchas gracias...