Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Jbat1Jumper

#1
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

#pragma once

#include "EntityManager.h"

class Game
{
public:

Game();
~Game();

EntityManager* manager;  // En este punto tira error

int ID;
int puntos;

};



EntityManager.h

#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

#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...