Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » probleme mit header datei

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.03.2009, 16:09 Uhr
~oweginowgie
Gast


Hi alle zusammen,
ich brauche euere hilfe

--GwValues.h--

C++:
#ifndef GW_VALUES_H
#define GW_VALUES_H

DWORD GetPID(char *pName);
void UpdateData__stats( void );

struct _stats{
    float health;
    float energy;
    int experience;
    _faction faction;
    _position pos;
    int death;
    int level;
    int knockdown;
    int camcourse;
    int expander;
    int pvp_pve;
    _map map;
} player, hero[3];

#endif /* GW_VALUES_H */


ich möchte nun player und hero[3] in allen meinen .cpp-dateien nutzen können.
aber wenn ich zb in meiner main.cpp datei und in GwValues.cpp datei

C++:
player.pos.x = 10;


schreibe, bekomm ich folgenden error:


Code:
Linking...
Main.obj : error LNK2005: "struct _stats * hero" (?hero@@3PAU_stats@@A) already defined in GwValues.obj
Main.obj : error LNK2005: "struct _stats player" (?player@@3U_stats@@A) already defined in GwValues.obj

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
26.03.2009, 18:00 Uhr
Tommix



Hallo,
Du mußt die Definition von der Deklaration trennen und in genau einer cpp-Datei vornehmen, nicht im Header:

C++:
#ifndef GW_VALUES_H
#define GW_VALUES_H

DWORD GetPID(char *pName);
void UpdateData__stats( void );

struct _stats{
    float health;
    float energy;
    int experience;
    _faction faction;
    _position pos;
    int death;
    int level;
    int knockdown;
    int camcourse;
    int expander;
    int pvp_pve;
    _map map;
};

extern struct _stats player, hero[3];

#endif /* GW_VALUES_H */

// GwValues.cpp

#include "GwValues.h"

struct _stats player, hero[3];

// main.cpp

#include "GwValues.h"

int main()
{
    player.health = 0.0;
}



Wobei globale Variable so ihre Tücken haben.

Gruß, Tommix

Dieser Post wurde am 26.03.2009 um 18:01 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
26.03.2009, 21:48 Uhr
öni



hätte theoretisch nicht auch einfach ein "static" gereicht?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
26.03.2009, 22:28 Uhr
FloSoft
Medialer Over-Flow
(Administrator)



Zitat von öni:
hätte theoretisch nicht auch einfach ein "static" gereicht?

nein, das gäbe in der art keinen sinn.

Ansonsten würde ich empfehlen dieses ganze struct + externe Funktionen gleich als klasse zu implementieren (dann braucht man ggf keine globalen variablen)

Weil im Moment sieht das ganze eher nach C aus, vom Code her
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: