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

11

13.01.2009, 17:14

Für Trikkies interpretation spricht auch das er #include <iostream> unmittelbar über der deklaration von Spielen() geschrieben hat ;)

@Spiri: du musst auch die deklaration von CPlayer vor der funktion einbinden, bei der du sie verwendest - der compiler kennt immer nur die Quellcodedatei, die er grade übersetzt, und die header, die von dieser Datei per #include eingebunden werden

//EDIT: was er mit 0 will, weiß ich auch nicht, solange er nicht die klasse zeigt, weil member an sich haben ja keine Werte, solange sie nicht als teil einer Instanz initialisiert werden ;)

Anonymous

unregistriert

12

13.01.2009, 17:37

Hier der Code der Klasse:

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
#include <iostream>
class CPlayer
{
private:

    // Memberfunktionen

    //

    std::string m_Spielername;
    unsigned int m_Lebensenergie;
    unsigned short m_Versuche;
    unsigned int m_SpielGeld;
    unsigned int m_Punkte;

public:

    // Funktionen

    //

    CPlayer ()
    {
        m_Spielername = "";
        m_Lebensenergie = 0;
        m_Versuche = 0;
        m_SpielGeld = 0;
        m_Punkte = 0;
    }
};


Jetzt noch zu den Fragen:

Zitat von »"Errschaffer"«

Ähm.Ich nehme an das du hier einen Zeiger deklariest.
Das geht dann so.

C-/C++-Quelltext

1
int Spielen (CPlayer *pSpieler);


Das ist eine Referenz.

Zitat von »"BlackSnake"«

ist dein konstruktor privat?


Nein. public.

Zitat von »"kiba"«

Ist das eine Klasse?


In der Parameterliste ja. Hätte man auch durch das "C" im CSpieler rausfinden können.

Zitat von »"kiba"«

Wofür das "int".


Was sollte ich sonst benutzen? Etwa das: (?)

C-/C++-Quelltext

1
CPlayer Spielen (CPlayer &Spieler);



So. dann noch mal:

In meinem Konstruktor sind alle Membervariablen der Klasse CPlayer auf "0" gesetzt. Wenn ich jetzt in der main die Werte ändere und eine andere Datei erstelle "Beispiel.hpp/Beispiel.cpp" kann ich nicht CPlayer der Headerdatei übergeben, da sie CPlayer ja nicht kennt. So kann ich nicht die bereits vorhandenen Daten in die andere Datei registrieren.

Errschaffer

Alter Hase

Beiträge: 865

Wohnort: Frankfurt

  • Private Nachricht senden

13

13.01.2009, 17:39

Ich nehme an deine Problem sind "Include Guards"

http://en.wikipedia.org/wiki/Include_guard

Ich werde aus deiner Beschreibung aber immer noch nicht schlau.

14

13.01.2009, 17:41

Hallo

C vor Player kannst auch weglassen, aber ich will hier keinen Streit über die Ungarische Notation anzetteln, ist nur meine persönliche Meinung (gilt übrigens auch für m_)
Wenn du Player übergeben willst, musst du es eben im anderen Header bekannt machen (inkludieren)


chrische

Anonymous

unregistriert

15

13.01.2009, 17:50

Zitat von »"chrische5"«

Hallo

C vor Player kannst auch weglassen, aber ich will hier keinen Streit über die Ungarische Notation anzetteln, ist nur meine persönliche Meinung (gilt übrigens auch für m_)
Wenn du Player übergeben willst, musst du es eben im anderen Header bekannt machen (inkludieren)


chrische


Das habe ich schon mit

C-/C++-Quelltext

1
#include "CPlayer.hpp"
gemacht.

Dofter

Treue Seele

Beiträge: 159

Wohnort: im wunderbaren EBERMANNSTADT

Beruf: Schüler^^

  • Private Nachricht senden

16

13.01.2009, 17:50

Zitat von »"Luca"«

Wenn ich jetzt in der main die Werte ändere


ääähmm.. wie willst du Werte ändern? sind doch private variablen, und ich seh jetzt keine Setter-Methoden, außer du hast die geläscht im Post.
"Wo kämen wir hin, wenn alle sagten, wo kämen wir hin, und keiner ginge,
um zu sehen, wohin wir kämen, wenn wir gingen"

17

13.01.2009, 17:51

Hallo

Und was klappt dann konkret nicht?

chrische

Dofter

Treue Seele

Beiträge: 159

Wohnort: im wunderbaren EBERMANNSTADT

Beruf: Schüler^^

  • Private Nachricht senden

18

13.01.2009, 17:56

was ichm ir noch vorstellen könnte wäre, dass du vergessen hast hier:

C-/C++-Quelltext

1
2
#include <iostream>
int Spielen (CPlayer &Spieler);

die Klasse (oder den zugehörigen Header) zu inkludieren. Wenn das jedenfalls der gesamte Code in der Datei ist, ist CPlayer natürlich noch nicht bekannt.
"Wo kämen wir hin, wenn alle sagten, wo kämen wir hin, und keiner ginge,
um zu sehen, wohin wir kämen, wenn wir gingen"

Anonymous

unregistriert

19

13.01.2009, 17:59

Zitat von »"Dofter"«

ääähmm.. wie willst du Werte ändern? sind doch private variablen, und ich seh jetzt keine Setter-Methoden, außer du hast die geläscht im Post.


Das geht ganz einfach:

C-/C++-Quelltext

1
2
3
4
void CPlayerSpielername (std::string m_Spielername)
{
     m_Spielername;
}


Zitat von »"crische5"«

Hallo

Und was klappt dann konkret nicht?

chrische


Na wenn ich im Programm den Spielernamen eingebe. "Luca" zum Beispiel, dann wenn ich in die andere Datei springe ist wiederder Spielername auf "", da ich CPlayer Spieler nicht in die Parameter in der Headerdatei reinschreiben kann.

Anonymous

unregistriert

20

13.01.2009, 18:01

Zitat von »"Dofter"«

was ichm ir noch vorstellen könnte wäre, dass du vergessen hast hier:

C-/C++-Quelltext

1
2
#include <iostream>
int Spielen (CPlayer &Spieler);

die Klasse (oder den zugehörigen Header) zu inkludieren. Wenn das jedenfalls der gesamte Code in der Datei ist, ist CPlayer natürlich noch nicht bekannt.


Hab ich schon vrsucht.
Der Compiler mault dann mit mir:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
1>------ Neues Erstellen gestartet: Projekt: Spielekiste, Konfiguration: Debug Win32 ------
1>Die Zwischen- und Ausgabedateien für das Projekt "Spielekiste" mit der Konfiguration "Debug|Win32" werden gelöscht.
1>Kompilieren...
1>Hauptmenü.cpp
1>c:\users\luca\documents\visual studio 2008\projects\spielekiste\spielekiste\cplayer.hpp(3) : error C2011: 'CPlayer': 'class' Typneudefinition
1>        c:\users\luca\documents\visual studio 2008\projects\spielekiste\spielekiste\cplayer.hpp(3): Siehe Deklaration von 'CPlayer'
1>c:\users\luca\documents\visual studio 2008\projects\spielekiste\spielekiste\hauptmenü.cpp(25) : error C2079: 'Spieler' verwendet undefiniertes class 'CPlayer'
1>Spielen.cpp
1>c:\users\luca\documents\visual studio 2008\projects\spielekiste\spielekiste\cplayer.hpp(3) : error C2011: 'CPlayer': 'class' Typneudefinition
1>        c:\users\luca\documents\visual studio 2008\projects\spielekiste\spielekiste\cplayer.hpp(3): Siehe Deklaration von 'CPlayer'
1>Code wird generiert...
1>Das Buildprotokoll wurde unter "file://c:\Users\Luca\Documents\Visual Studio 2008\Projects\Spielekiste\Spielekiste\Debug\BuildLog.htm" gespeichert.
1>Spielekiste - 3 Fehler, 0 Warnung(en)
========== Alles neu erstellen: 0 erfolgreich, Fehler bei 1, 0 übersprungen ==========

Werbeanzeige