Hat dir diese Antwort geholfen?
Oho, das geht? Abgesehen davon, dass ich's gleich mal probiere, hier mal etwas konkretere (und hoffentlich auch klarere) Angaben zum Code:
Also.......ich habe eine main.cpp, die unter anderen diesen Code enthält:
void InitSDL
{
...
screen = SDL_SetVideoMode(1024, 768, 16, SDL_HWSURFACE | SDL_DOUBLEBUF | SDL_FULLSCREEN);
...
}
int main(int argc, char *argv[])
{
InitSDL();
...
figuremax = 1;
Figures = new Figure*[figuremax];
Figures[0] = new Figure(0,"Unser Held");
...
Figures[0]->Draw(screen);
...
}
Bis dahin alles super, hier noch die zugehörige Klasse Figure aus der Figure.cpp/.h (in Auszügen)
void Figure::SetImage(SDL_Surface *new_image)
{
image = new_image;
}
void Figure::Draw(SDL_Surface *target)
{
SDL_BlitSurface(image, NULL, target, &rect);
}
Prinzipiell immer noch kein Problem.
Es handelt sich also um ein SDL-Projekt. In der Main wird ein Screen initialisiert und dann werden verschiedenste Figuren instanziert, die sich bei Bedarf auf den Screen zeichnen dürfen.
Dafür muss ich allerding den screen übergeben.
Nun brauche ich aber für viele Sachen den Screen und andere elementare Sachen wie die Größe des Spielfeldes etc und will nicht andauernd den ganzen Variablen-schwanz an den Funktionsaufruf ranhängen.
Deshalt war mein erster Gedanke eine Header "elements.h", die in etwas so aussehen sollte:
#ifndef __ELEMENTS_H__
#define __ELEMENTS_H__
#include <SDL/SDL.h>
SDL_Surface *LoadBMP(const char *filename);
bool RectCollision(SDL_Rect *rect1, SDL_Rect *rect2);
SDL_Surface* screen;
int xmax, ymax;
...
//und alles, was so wichtig ist
#endif
Das ist bei den Funktionen super gelaufen, aber wenn ich nun Variablen in die Header schreibe und diese sowohl in der main.cpp als auch der figure.cpp inkludiere dann kommt eben diese Fehlermeldung ala "Variable mehrfach deklariert" da ja die main sowohl von sich als auch der figure die Deklaration bezieht.
Das wollte ich nun also umgehen und werde das gleich mal versuchen.
Vielen Dank schonmal
Spawn