Hey HaBo.
Ich hab etwas Probleme mit zwei Klassen
Beide haben Zeiger aufeinander, wobei mir jetzt aber leider die Logik was killt^^.
Da beide ja einen Zeiger haben muss die eine Klasse erst den Aufbau der zweiten wissen.
Prob ist halt das beide einander vollständig haben wollen um zu laufen, da ich den Fehler mir so vorstelle:
define player_H
player.h => include world.h
define world_h
include player_h => bereits defined, fail
cWorld hat keine Definition von cPlayer, da die erst nach dem include "world.h" käme.
und andersrum.
Irgendwelche sauberen Vorschläge wie ich das geregelt bekomme?
einen Zeiger auf was anderes und dann Umcasten fände ich nicht so schön und auch blöd wäre es wenn ich auf den cWorld* verzichten müsste..
MfG
EDIT:
Das gibts nicht >.< Google die ganze Zeit schon und kaum poste ichs find ich die Lösung:
#ifndef PLAYER_H
#define PLAYER_H
class cPlayer;//Hier einmal "Voranlegen"
#include <SDL.h>
#include "world.h"
und das selbe nochmal in der world.h - Voila!
Ich hab etwas Probleme mit zwei Klassen
Beide haben Zeiger aufeinander, wobei mir jetzt aber leider die Logik was killt^^.
Da beide ja einen Zeiger haben muss die eine Klasse erst den Aufbau der zweiten wissen.
Das sieht etwa so aus:
sowie
Code:
#ifndef PLAYER_H
#define PLAYER_H
#include <SDL.h>
#include "world.h"
class cPlayer{
private:
SDL_Surface* img;
float realX;
float realY;
float xVelocity;
float yVelocity;
float xVelocityMax;
float yVelocityMax;
bool inAir;
cWorld* world;/**Hier ist die zweite Klasse**/
public:
cPlayer(cWorld* world);
virtual ~cPlayer();
void draw(SDL_Surface* world, float marginX, float marginY);
void jump();
void move();
void accelerate(bool right);
void draw(SDL_Surface* screen);
float getRealX();
float getRealY();
};
#endif
Code:
#ifndef WORLD_H
#define WORLD_H
#include <SDL.h>
#include "player.h"
#include "block.h"
class cWorld{
private:
cPlayer* player;//Zeiger auf dem Spieler -> die andere Klasse
cBlock*** level;
int levelX;
int levelY;
float viewX;
float viewY;
public:
cWorld();
cWorld(cBlock*** level, int levelX, int levelY);
void draw(SDL_Surface* screen);
void clear();
virtual ~cWorld();
cPlayer* getPlayer();
};
#endif
define player_H
player.h => include world.h
define world_h
include player_h => bereits defined, fail
cWorld hat keine Definition von cPlayer, da die erst nach dem include "world.h" käme.
und andersrum.
Irgendwelche sauberen Vorschläge wie ich das geregelt bekomme?
einen Zeiger auf was anderes und dann Umcasten fände ich nicht so schön und auch blöd wäre es wenn ich auf den cWorld* verzichten müsste..
MfG
EDIT:
Das gibts nicht >.< Google die ganze Zeit schon und kaum poste ichs find ich die Lösung:
#ifndef PLAYER_H
#define PLAYER_H
class cPlayer;//Hier einmal "Voranlegen"
#include <SDL.h>
#include "world.h"
und das selbe nochmal in der world.h - Voila!
Zuletzt bearbeitet: