No puedo compilar correctamente 3 clases que requieren una de otra de manera circular.
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
EntityManager.h
Entity.h
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...
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 [Seleccionar]
#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 [Seleccionar]
#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 [Seleccionar]
#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...