Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Jbat1Jumper en 29 Marzo 2012, 06:11 am



Título: Problema al incluir varias clases
Publicado por: Jbat1Jumper en 29 Marzo 2012, 06:11 am
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
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...




Título: Re: Problema al incluir varias clases
Publicado por: Beakman en 29 Marzo 2012, 09:18 am
Al comienzo de todo el código escribí lo siguiente:
Código
  1. class Game;
  2. class EntityManager;
  3. class Entity;

Saludos.


Título: Re: Problema al incluir varias clases
Publicado por: Jbat1Jumper en 29 Marzo 2012, 13:23 pm
Gracias