2 Dateien brauchen sich
-
Ich hab in einem VC++ project 2 Dateien
1.Object.cpp
und 2. Collision.cpp
(überall noch die header dateien dazu)Collision.cpp braucht braucht Strukturen Object.cpp.
und Object.cpp braucht Funktionen aus Collision.cpp.
Bin ich doooph? oder funktioniert sowas nicht?
Wenn ich das project compile, bekomm ich den Fehler "OBJECTLIST' : redefinition; symbol cannot be overloaded with a typedef"
was kann ich machen?
-
(OBJECTLIST ist eine Struktur aus der Datei Object.cpp)
-
in object.cpp sollten keine Strukturen, die von anderen Files benötigt werden, deklariert sein, die gehören in object.h. Genauso kannst du Funktionen in Headern deklarieren. Mehr kann ich ohne mehr input nicht sagen.
-
sorry da hab ich mich verschrieben
die Datentyp Strukturen sind natürlich in den HeaderdateienIch poste sie hier mal:
/////////////////////////////////////////////////// //Object.h /////////////////////////////////////////////////// #ifndef _OBJECT_ #define _OBJECT_ /////////////////////////////////////////////////// //INCLUDES /////////////////////////////////////////////////// #include "airam_Sprite.h" #include "airam_ddraw.h" #include "collision.h" /////////////////////////////////////////////////// //PROTOTYP /////////////////////////////////////////////////// /////////////////////////////////////////////////// //DIFINES /////////////////////////////////////////////////// //gekürzt: weil unwichtig /////////////////////////////////////////////////// // STRUKTUREN /////////////////////////////////////////////////// typedef struct SKILL_TYP{ short Speed; short Attack; short Resistence; short ZDUMMI; }SKILL, *SKILL_P; typedef struct OBJECT_TYP{ short x, y; //Weltkoordinaten des objectes char typ; //PLAYER ENEMY ODER NPC maybe kommt noch was dazu char Richtung; //die Richtung in die das object gerne gehen möchte char condition; //Zustand: HIT, ATTACK, GOING, STANDING.. etc BOOL Change; //wird für die Animierfuktion benötigt, wenn das Objectrichtung wechselte muss der Bilder-Wechsel-Timer erstma geNULLt werden char zdummi; //dummi Variable SKILL skill; //Skill Strutur die die Fähigkeiten des Objectes beschreibt short HP; //Healh Points: wie der Name schon sagt AIR_SPRITE8_P pSprite; //Pointer auf Sprite Struktur, das zum Object gehört (die bilder, Größe usw) }OBJECT; typedef struct OBJECTLIST_TYP {// einfach verkettete Liste OBJECT *Object; struct OBJECTLIST_TYP *next; }OBJECTLIST; /////////////////////////////////////////////////// //PROTOTYP /////////////////////////////////////////////////// BOOL InitSprite(const char *, AIR_SPRITE8_P, char, char, char, char, char); BOOL InitSprites(void); BOOL CreatePlayer(OBJECT *, const char *, char, char, char, char, char, short, short); BOOL CreateTrottel(OBJECT *, short, short); BOOL atiMove_Objects(OBJECTLIST **); BOOL atiAnimate_Objects(OBJECTLIST **); BOOL atiPaint_Objects(OBJECTLIST **); #endif
und collision.h
/////////////////////////////////////////////////// //collison.h /////////////////////////////////////////////////// #ifndef _BUMM_ #define _BUMM_ #include "Object.h" #include "atina_map.h" /////////////////////////////////////////////////// //PROTOTYP /////////////////////////////////////////////////// BOOL atiMapCheckBumm(OBJECTLIST **olist); #endif
(was ich für unwichtig gehalten hab, is gekürzt worden)
-
Wenn Du im Prototyp nur mit Pointern arbeitest, muss der Compiler nicht den genauen Aufbau der Struktur kennen. Du kannst die Struktur dann einfach mit "struct OBJECTLIST;" vordeklarieren und musst den anderen Header nicht #includen. Wie gesagt: mit Zeigern geht es (mit Referenzen wahrscheinlich auch, oder?).
-
danke für die Antwort, ich probiers jetzt aus