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

01.02.2013, 14:30

Problem: struct fehlender Typspezifizierer?

Hallo,


ich bin auf ein Problem mit struct gestoßen:

error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'm_Items' Zeile 33 (diesen Fehler 2-mal)

error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt. Zeile 33 (diesen Fehler 4-mal)
:hmm:

hier der Code:

BZC_Spieler.hpp:

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
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
#ifndef BZC_SPIELER_HPP
#define BZC_SPIELER_HPP

#include "Singleton.hpp"
#include "BZS_Charakter.hpp"
#include "BZE_Bild.hpp"
#include "BZ_Spiel.hpp"


#define g_pSpieler CBZC_Spieler::Get()

class CBZC_Spieler : public TSingleton <CBZC_Spieler>
{
public:
void Render_Aktualisiere    ();
int HoleXPos ();
int HoleYPos ();
void SchlageRechts (); // wenn RIGHT gedrückt wird
void SchlageLinks (); // wenn LEFT gedrückt wird
void SchlageOben (); // Wenn UP gedrückt wird
void SchlageUnten (); // Wenn DOWN gedrückt wird
void Fernkampfwaffe (bool Ja);
void AktiviereItem_Begleiter(bool Begleiter, int welches_ID);
void LaufeNachLinks (); // wenn "a" gedrückt wird ausführen
void LaufeNachRechts ();    // wenn "d" gedrückt wird ausführen
void NachOben (); // wenn "w" gedrückt wird ausführen
void NachUnten (); // wenn "s" gedrückt wird ausführen
void SchadenErhalten (int Schaden, int wo);
void LadeSpieler ();


private:
SItem m_Items;

void m_RenderWaffe (int AngriffRichtung);

bool m_imSprung;
int m_Angriff; // 1Oben 2Unten 3Rechts 4Links
bool m_Fernkampf; // true = fernkampf false = Nahkampf

int m_xPos1TreffZone; //ausgehend von xPos/yPos
int m_xPos2TreffZone;
int m_yPos1TreffZone;
int m_yPos2TreffZone;

int m_xPos;
int m_yPos;
int m_xPosWaffen;   //zum berechnen von treffer und anzeigen von den Waffen
int m_yPosWaffen;

// ...
};

#endif


BZ_Spiel.hpp:

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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#ifndef SPIEL_HPP
#define SPIEL_HPP

#include <iostream>
#include <string>
#include <fstream>
#include "Singleton.hpp"
#include "BZE_Grund.hpp"
#include "BZE_Text.hpp"
#include "BZE_Bild.hpp"
#include "BZS_AktuelleLandschaft.hpp"
#include "BZC_Spieler.hpp"

using namespace std;

struct SItem
{
// Items: 0=hat man nicht
// 1=man hat das Item
// 2=man hat den Begleiter
// 3=man hat das Item auf dem Schwert ausgerüstet
// 4=man hat das Item auf dem Bogen ausgerüstet
// 5=man hat das Item auf der Rüstung ausgerüstet
// 6=man hat den Begleiter ausgerüstet
int INormal;
int ICarbon;
int IHolz;
int IFeuer;
int IMetall;
int IGlas;
int IEis;
int ISchwefel;
int IWasser;
int IObsidian;
int ISaureMilch;
int IBlume;
int IQuarz;
int IDiamant;
};

// ...

#endif


Ich hoffe, dass mir jemand helfen kann. ;)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »M4ff1n« (01.02.2013, 19:16)


dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

01.02.2013, 15:19

Das Problem ist, dass BZ_Spiel.h und BZ_Spieler.h sich gegenseitig inkludieren.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

3

01.02.2013, 16:28

Ich bekomm schon wieder Würgereiz...
class CBZC_Spieler : public TSingleton <CBZC_Spieler>
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]

4

01.02.2013, 16:58

#define g_pSpieler CBZC_Spieler::Get()

*Schauder*
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

5

01.02.2013, 17:09


Quellcode

1
2
3
4
5
6
7
// Items: 0=hat man nicht
// 1=man hat das Item
// 2=man hat den Begleiter
// 3=man hat das Item auf dem Schwert ausgerüstet
// 4=man hat das Item auf dem Bogen ausgerüstet
// 5=man hat das Item auf der Rüstung ausgerüstet
// 6=man hat den Begleiter ausgerüstet


Du solltest Dir evtl. mal enum anschauen. Und Du hast evtl. einen Logikfehler, falls man mehrere eines Items haben kann.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

6

01.02.2013, 19:06

Hallo,
danke für die Antworten.

Man kann jedes Item bzw. Begleiter nur einmal haben ;) und ich glaube enum bringt es da nicht so arg, da ich die Werte ja verändern möchte.

Wie kann man sie inkludieren, sodass beide auf einander zugreifen können? :S (Ich bekomms nich hin...)

Und dass meine Programmierkenntnisse nicht die besten sind kann ich mir denken:P.

Schrompf

Alter Hase

Beiträge: 1 470

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

7

01.02.2013, 19:32

Die Variablenwerte ändern sich natürlich, aber die Möglichkeiten sind immer konstant, die eine dieser Variablen annehmen kann. Daher enum.

Nuja, wir alle lernen ja jeden Tag dazu. Nimm es also als Chance :-)

Ich würde in BZC_Spieler das Include von BZ_Spiel.h entfernen und dann mal schauen, was der Compiler anmeckert. Die packst Du dann als Forward Declaration vor die Spieler-Klassendefinition.
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

01.02.2013, 20:02

Wie kann man sie inkludieren, sodass beide auf einander zugreifen können?

Am besten gar nicht. Ich bin generell der Meinung, dass Abhängigkeiten möglichst immer nur in eine Richtung laufen sollten, wie ein Baum, nie irgendwie im Kreis.
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]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

9

01.02.2013, 20:28

Dein Stichwort lautet: Forward Declaration.

10

01.02.2013, 21:48

Vielen Dank für die Antworten hab es jetzt hinbekommen :D .

Werbeanzeige