Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

19.07.2009, 23:48

Struktur in mehreren Dateien

Will eine Struktureigenschaft in einer .cpp Datei ändern und in einer anderen den Wert ausgeben lassen, klappt aber nicht.
Bin mir bewusst, dass sich das nicht rentiert, geht aber mehr um das Prinzip als um das spezielle Beispiel.
Gesamter Code ist aufgelistet:

Seite 1.cpp:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include "Seite 2.hpp"

using namespace std;

struct sFeld
{
    int x;
};

sFeld Feld[25];

int main ()
{
    neuerwert ();
    cout << Feld[10].x;
    return 0;
}


Seite 2.hpp

Quellcode

1
void neuerwert ();


Seite 2.cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
#include "Seite 2.hpp"

extern struct sFelder;
extern int sFelder.x;
extern sFelder Felder[25];

void neuerwert ()
{
    Felder[10].x=5;
}


Bringt mir allerdings nur folgende Fehlermeldungen:

Zitat

c:\program files\microsoft visual studio\myprojects\exs\seite 2.cpp(3) : warning C4091: 'extern ' : Ignoriert auf der linken Seite von 'struct sFelder', wenn keine Variable deklariert wurde
c:\program files\microsoft visual studio\myprojects\exs\seite 2.cpp(4) : error C2143: Syntaxfehler : Fehlendes ';' vor '.'
c:\program files\microsoft visual studio\myprojects\exs\seite 2.cpp(4) : error C2143: Syntaxfehler : Fehlendes ';' vor '.'
c:\program files\microsoft visual studio\myprojects\exs\seite 2.cpp(5) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'Felder'
c:\program files\microsoft visual studio\myprojects\exs\seite 2.cpp(5) : fatal error C1004: Unerwartetes Dateiende gefunden
Träume nicht dein Leben - Lebe deine Träume!
Die beste Möglichkeit, Träume zu verwirklichen, ist aufzuwachen.

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

2

19.07.2009, 23:58

Ne so geht das leider nicht.


Mach die Struct in einen Header:
Seite 1.hpp:

C-/C++-Quelltext

1
2
3
4
5
6
struct sFeld
{
    int x;
};

extern sFeld Feld[25];


Seite 1.cpp:

C-/C++-Quelltext

1
2
3
4
#include "Seite 1.hpp"

sFeld Feld[25];
[...]


Seite 2.cpp:

C-/C++-Quelltext

1
2
3
4
5
6
#include "Seite 1.hpp"

void neuerwert ()
{
    Feld[10].x=5;
}


Bei dem extern mit der globalen bin ich mir nicht sicher, braucht man nur ganz selten, aber so sollte es logisch gesehen richtig sein.

Socke

3

20.07.2009, 00:11

Danke, jetzt klappts^^
:D
Träume nicht dein Leben - Lebe deine Träume!
Die beste Möglichkeit, Träume zu verwirklichen, ist aufzuwachen.

4

20.07.2009, 13:07

Zitat von »"Faule Socke"«

Bei dem extern mit der globalen bin ich mir nicht sicher, braucht man nur ganz selten, aber so sollte es logisch gesehen richtig sein.

Socke

ohne das extern bekomsmt du nen linkerfehler wegen neudefinition - aber man brauchts trotzdem nur ganz selten, ich weiß garn icht, wann ich das letzte mal ne globale variable gesehen hab ;)

Faule Socke

Community-Fossil

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

5

20.07.2009, 20:35

Jo ich weiß das ich einen Linkerfehler bekomme, ich wusste nur nicht mehr, wo das extern hinkommt, hab dann nachgedacht und irgendwie wars logisch, dass allen modulen bekannt sein soll, dass die var extern ist und deshalb kommts in header aber war eben nicht mehr ganz sicher, wo es hinkommt ;-)

Socke

Werbeanzeige