Du bist nicht angemeldet.

Werbeanzeige

LuGo

Frischling

  • »LuGo« ist der Autor dieses Themas

Beiträge: 54

Wohnort: Attendorn im schönen Sauerland

Beruf: Schüler

  • Private Nachricht senden

1

20.03.2011, 14:14

Probleme mit Verwendung einer Klasse


Hallo zusammen,

wenn ich die u.g. Dateien versuche zu kompilieren, wirft mir Compiler 30 Fehler um die Ohren und ich weiß nicht, was ich noch machen soll. Hier die fehlerwerfenden Dateien:

Game.cpp

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream> 
#include "Game.h" 
#include <Windows.h> 
#pragma comment (lib, "winmm.lib")CGame::CGame(void) 
{ 
}; 
 CGame::~CGame(void) 
{ 
}int CGame::Init () 
{ 
CGame::ZeichneSpielfeld ();return 0; 
}int CGame::ZeichneSpielfeld() 
{ 
const int SpielfeldBreite = 100;const int SpielfeldHöhe = 100; 
for (int x=0;x == SpielfeldBreite ; x++) 
{for (int y=0; y == SpielfeldHöhe; y++) 
{ 
} 
}return 0; 
}int CGame::SetzeStädte () 
{ const int AnzahlStädte = 10;for (int i=0; i == AnzahlStädte; i++) 
srand(timeGetTime());return 0; 
}

Klasse "CGame"
class CGame

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
{ 
public: 
CGame(); 
~CGame();int Init (); //Hier wird das Spiel vorbereitet 

//Funktionen für CGame.Init 
int SetzeStädte ();int ZeichneSpielfeld (); 


private:bool Spielvorbereitet; 
};

Und wirft dann diese Fehler aus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
1> Mainfile.cpp 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): error C2011: 'CGame': 'class' Typneudefinition 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(6): error C2027: Verwendung des undefinierten Typs "CGame" 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(6): error C2062: 'void'-Typ unerwartet 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(7): error C2143: Syntaxfehler: Es fehlt ';' vor '{' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(7): error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil? 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(11): error C2027: Verwendung des undefinierten Typs "CGame" 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(11): error C2062: 'void'-Typ unerwartet 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(12): error C2143: Syntaxfehler: Es fehlt ';' vor '{' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(12): error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil? 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(15): error C2027: Verwendung des undefinierten Typs "CGame" 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(17): error C2027: Verwendung des undefinierten Typs "CGame" 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(17): error C3861: "ZeichneSpielfeld": Bezeichner wurde nicht gefunden. 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(21): error C2027: Verwendung des undefinierten Typs "CGame" 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(34): error C2027: Verwendung des undefinierten Typs "CGame" 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\mainfile.cpp(6): error C2027: Verwendung des undefinierten Typs "CGame" 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\mainfile.cpp(6): warning C4551: Dem Funktionsaufruf fehlt die Argumentliste 

1> Include.h 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): error C2011: 'CGame': 'class' Typneudefinition 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(6): error C2027: Verwendung des undefinierten Typs "CGame" 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(6): error C2062: 'void'-Typ unerwartet 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(7): error C2143: Syntaxfehler: Es fehlt ';' vor '{' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(7): error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil? 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(11): error C2027: Verwendung des undefinierten Typs "CGame" 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(11): error C2062: 'void'-Typ unerwartet 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(12): error C2143: Syntaxfehler: Es fehlt ';' vor '{' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(12): error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil? 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(15): error C2027: Verwendung des undefinierten Typs "CGame" 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(17): error C2027: Verwendung des undefinierten Typs "CGame" 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(17): error C3861: "ZeichneSpielfeld": Bezeichner wurde nicht gefunden. 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(21): error C2027: Verwendung des undefinierten Typs "CGame" 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame' 

1>j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.cpp(34): error C2027: Verwendung des undefinierten Typs "CGame" 

1> j:\eigene dateien\programmierung\projekte\eisenbahnsimulator\game.h(2): Siehe Deklaration von 'CGame'

Ich komme damit nicht klar und es wäre nett, wenn mir jemand helfen könnte.

Danke,
LuGo

BlueCobold

Community-Fossil

Beiträge: 10 874

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

20.03.2011, 14:41

Mal von den eigentlichen Fehlern abgesehen, ist das hier sicher nicht in Deinem Interesse:

C-/C++-Quelltext

1
2
3
for (int x=0;x == SpielfeldBreite ; x++) 
{
    for (int y=0; y == SpielfeldHöhe; y++)


Das eigentliche Problem ist auf diese Art der präsentierten Quellcodes schwer zu erraten, ich tippe aber mal auf Probleme mit Include-Guards und dass du den gleichen Header mehrfach inkludierst (durch iterative oder auch rekursive Abhängigkeiten) und daher die CGame-Klasse mehrfach beim Compiler auftaucht, woraufhin er Dir mit Recht mitteilt, dass der Typ mehrfach definiert wurde.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

LuGo

Frischling

  • »LuGo« ist der Autor dieses Themas

Beiträge: 54

Wohnort: Attendorn im schönen Sauerland

Beruf: Schüler

  • Private Nachricht senden

3

20.03.2011, 14:44

Doch. Wenn man beim Zeichnen einen nach oben geht, sollen 100 Felder in die Breite gezeichnet werden.

BlueCobold

Community-Fossil

Beiträge: 10 874

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

20.03.2011, 14:44

Ja, das mag sein. Das machen die Schleifen aber nicht.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

LuGo

Frischling

  • »LuGo« ist der Autor dieses Themas

Beiträge: 54

Wohnort: Attendorn im schönen Sauerland

Beruf: Schüler

  • Private Nachricht senden

5

20.03.2011, 14:46

Ok. Kann mal eine andere Lösung versuchen anzuwenden.

Fred

Supermoderator

Beiträge: 2 130

Beruf: Softwareentwickler

  • Private Nachricht senden

6

20.03.2011, 14:50

Doch. Wenn man beim Zeichnen einen nach oben geht, sollen 100 Felder in die Breite gezeichnet werden.

Dann sollte es wohl eher so heißen:

C-/C++-Quelltext

1
2
3
for (int x=0;x < SpielfeldBreite ; x++) 
{
    for (int y=0; y < SpielfeldHöhe; y++)


Zu deinem eigentlichen Problem tippe ich auch mal stark darauf, dass du mehrere C++-Dateien hast, die alle Game.h per include einbinden.
Helfen würden hierbei Include Guards

7

20.03.2011, 14:50

Bevor du überhaupt etwas anderes probierst, formatiere den Quelltext sauber und verwende die schon erähnten Include-Guards.

Grüße ... bwbg

Zitat

Ich bin nicht der Messias.
Ich sage, du bist es, Herr. Und ich muss es wissen, denn ich bin schon einigen gefolgt.

https://bitbucket.org/bwbg

LuGo

Frischling

  • »LuGo« ist der Autor dieses Themas

Beiträge: 54

Wohnort: Attendorn im schönen Sauerland

Beruf: Schüler

  • Private Nachricht senden

8

20.03.2011, 15:04

Vielen Dank an euch alle. Es funktioniert jetzt.

Werbeanzeige