Del detalle del
- Código: Seleccionar todo
using namespace std;
ya me había dado cuenta, pero el problema con mis clases persiste... creía que se había solucionado al agregar lo que agregue... pero en vez de estarme declarando la clase me la redefine y luego ya no sirve lo demás...
Error 1
29 D:\Mis Documentos\Proyectos C++\Libreria para Juegos Dev\stagemanager.cpp ISO C++ forbids declaration of `clssGame' with no type
29 D:\Mis Documentos\Proyectos C++\Libreria para Juegos Dev\stagemanager.cpp expected `;' before '*' token
el VC 6.0 con sp6 me tira el error
d:\mis documentos\proyectos c++\libreria para juegos vc++\stagemanager.cpp(29) : error C2143: syntax error : missing ';' before '*'
que es el mismo que me tira el Dev-C++ supongo.
Ese error es para el siguiente código:
- Código: Seleccionar todo
#include "SDL/SDL.h"
#include "game.cpp"
#include "actor.cpp"
class clssStageManager
{
private:
void limpiarPantalla();
protected:
clssGame *game;//ERROR
Error 2 (Cuando le digo que clssGame es una clase, esto lo hice por que lo leí en algun lado que alguen había solucionado el error, pero a mi no me ha servido)
68 D:\Mis Documentos\Proyectos C++\Libreria para Juegos Dev\stagemanager.cpp 'class clssGame' has no member named 'actorManager'
Claro que actorManager no es un miembro de la clase, eso que agregue me la esta redefiniendo.
Acá está lo que le agrege:
- Código: Seleccionar todo
class clssGame{};//AGREGADO
class clssStageManager
{
private:
void limpiarPantalla();
protected:
clssGame *game;
SDL_Surface *buffer;
int ancho,
alto;
public:
inline clssStageManager(clssGame *g, int ancho, int alto, int bpp, int porHardware);
~clssStageManager() { SDL_FreeSurface(buffer); }
SDL_Surface *obtenerBuffer() { return buffer; }
void actualizar() { dibujar(); }
void dibujar();
};
clssStageManager::clssStageManager(clssGame *g, int ancho, int alto, int bpp, int porHardware)
{
game = g;
if(porHardware)
buffer = SDL_SetVideoMode (ancho, alto, bpp, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_NOFRAME); //Por Hardware
else
buffer = SDL_SetVideoMode (ancho, alto, bpp, SDL_SWSURFACE | SDL_NOFRAME); //Por Software
}
void clssStageManager::limpiarPantalla()
{
SDL_Rect area;
area.x = 0;
area.y = 0;
area.w = buffer->w;
area.h = buffer->h;
SDL_FillRect (buffer, &area, SDL_MapRGB (buffer->format, 0, 0, 0));
}
void clssStageManager::dibujar()
{
clssActor *actorTemporal;
game->actorManager->revobinar();//ERROR
Lo segundo es lo que yo creía que había solucionado... pero el error 1 es el importante... no me esta reconociendo la clase clssGame. Pero por si las dudas acá está el código del game.cpp:
- Código: Seleccionar todo
#include <string>
#include "SDL/SDL.h"
#include "stagemanager.cpp"
#include "actormanager.cpp"
#include "actor.cpp"
class clssGame
{
private:
void empezar();
void finalizar();
void crearActorManager(){ actorManager = new clssActorManager(this); }
void crearStageManager(){ stageManager = new clssStageManager(this, 640, 480, 24); }
protected:
void actualizar();
public:
string nombre;
clssActorManager *actorManager;
clssStageManager *stageManager;
clssGame() { actorManager = NULL; stageManager = NULL; }
~clssGame();
void iniciar();
int main(int argc, char *argv[]);
};
int clssGame::iniciar()//Lo ideal seria que tomara los valores desde un archivo .ini
{
//Inicia los subsistemas
if (SDL_Init(SDL_INIT_VIDEO) < 0)
return 0;
atexit(SDL_Quit);
crearActorManager();
crearStageManager();
empezar();
return 1;
}
void clssGame::empezar()
{
main();
finalizar();
}
void clssGame::finalizar()
{
delete actorManager;
delete stageManager;
}
void clssGame::actualizar()
{
actorManager->actualizar();
stageManager->actualizar();
}
No se que es lo que esta mal

. A ver si me pueden ayudar. Gracias desde ya.