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

02.11.2007, 17:24

Anfänger Frage: Klasse in eigener cpp datei...

Moin zusammen,

als quereinsteiger der von PHP kommt und nun ein wenig CPP machen will gibt es ein paar Sachen die sich mir nicht so recht erschließen. Ich hab da zum Beispiel folgendes verständinissproblem.

Ich möchte eine eigene Klasse Schreiben. In diesem Fall soll das eine einfache Klasse sein die einen Character in einem RPG darstellt. Diese Klasse soll im Konstruktor einen String entgegennehmen der den Namen des Charakters beinhaltet.

Ich habe derzeit folgendes Konstrukt:

character.h

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <string>

using namespace std;

class character {
    
public :
    character(string name);

};


character.cpp

C-/C++-Quelltext

1
2
3
4
5
6
class character {
    public:
        character(string name) {
            cout << "Hallo ich bin " << name << endl;
        };
};


Als Fehler schmeisst VC++ Express 2005 folgendes raus:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
------ Erstellen gestartet: Projekt: Prog Test, Konfiguration: Debug Win32 ------
Kompilieren...
character.cpp
.\character.cpp(5) : error C2146: Syntaxfehler: Fehlendes ')' vor Bezeichner 'name'
.\character.cpp(5) : error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'name'
.\character.cpp(5) : error C2460: 'character::string': Verwendet gerade definiertes 'character'
        .\character.cpp(3): Siehe Deklaration von 'character'
.\character.cpp(5) : error C2059: Syntaxfehler: ')'
.\character.cpp(5) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
.\character.cpp(5) : error C2473: "name": Sieht wie eine Funktionsdefinition aus, weist jedoch keine Parameterliste auf.
.\character.cpp(6) : error C2143: Syntaxfehler: Es fehlt ';' vor '<<'
.\character.cpp(6) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: "default-int" wird von C++ nicht unterstützt.
.\character.cpp(6) : error C2238: Unerwartete(s) Token vor ';'
.\character.cpp(8) : error C2059: Syntaxfehler: '}'
.\character.cpp(8) : error C2143: Syntaxfehler: Es fehlt ';' vor '}'
.\character.cpp(8) : error C2059: Syntaxfehler: '}'
Das Buildprotokoll wurde unter "file://c:\Dokumente und Einstellungen\Christian\Eigene Dateien\Visual Studio 2005\Projects\Prog Test\Prog Test\Debug\BuildLog.htm" gespeichert.
Prog Test - 12 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Scheinbar kennt der die Klasse "string" nicht. Laut http://www.volkard.de/vcppkold/die_klasse_string.html wird die aber in der <string> definiert. Was ist falsch? Und bitte seit nicht zu hart zu mir bin nochn anfänger^^[/cpp][/code]

Task-Manager

Alter Hase

Beiträge: 1 087

Wohnort: am PC

Beruf: Student

  • Private Nachricht senden

2

02.11.2007, 17:29

sach mal wo is die main class?

und naja erstmal würde ich die Zeichensetzungs fehler beheben^^

mfg
BRWeiden
falls ichs i-wo vergessen hab:

mfg
Task-Manager

Rechtschreibfehler sind mein Eigentum und gewollt!

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

02.11.2007, 17:32

In CPP ist es ein wenig anders als in PHP. In die CPP-Datei gehört nur noch das endgültige ausschreiben der Methoden (zumidnest in den meisten Fällen. Es gibt auch andere Fälle, aber die wollen wir mal auslassen).

Und das ausschreiben der Methoden bzw. das Füllen der Methoden mit sind geht wie folgt:

C-/C++-Quelltext

1
2
3
4
character::character(string name) 
{
      cout << "Hallo ich bin " << name << endl;
}


So also man schreibt den Klassen Namen dann :: und dann den Methodennamen. Schlussendlich die Parameter.

Man könnte es auch so aufschreiben:
[Rückgabewert] Klassenname::Methodenname([Parameterliste])
{
[Code]
}

Alternativ kann man auch direkt im Header (oder direkt in die Klasse) die Methoden "reinschrieben". Aber das ist ein anderes Thema.
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

4

02.11.2007, 18:36

Ah ok thx erstmal. Ja das ich in der Berufsschule c++ hatte is schon ne Weile her^^. Hatte ganz vergessen wie das genau abzulaufen hat...

Ist es denn korrekt das die includes in der Header Datei gemacht werden?

Die Main ist keine Klasse sondern ne einfache funktion. Da passiert aber nix weiter drin außer das die character.h inkludiert wird. Ich kann leider keine Zeichensetzungsfehler finden. Hab ich da was übersehen?

5

02.11.2007, 18:41

Baa und guck dir direkt an, warum man im Header kein using namespace nimmt, was const-correctness ist und wie man per Referenz Parameter übergibt.
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

NicoWe

Treue Seele

Beiträge: 126

Wohnort: Bielefeld / NRW

  • Private Nachricht senden

6

02.11.2007, 21:48

Re: Anfänger Frage: Klasse in eigener cpp datei...

Zitat von »"Brainshack"«


...
Und bitte seit nicht zu hart zu mir bin nochn anfänger^^


Dann mach lieber erst noch ein paar simple Konsolenprogramme; wenn du mit Klasssen, Konstruktoren und in .h und .cpp Dateien verlagertem Code anfängst verliest du jeden Elan ;)

Zitat von »"Deviloper"«


Baa und guck dir direkt an, warum man im Header kein using namespace nimmt, was const-correctness ist und wie man per Referenz Parameter übergibt.


Ja, der Stil ist schlecht, aber wie wärs wenn er erstmal lernt wie man das ganze ohne Kompilerfehler hinbekommt um dann den Stil niederzumachen.

Aber unrecht hast du nicht, das using namespace im header ist nunja...schlimm; und ob du nun nen const *string oder nen string übergibt ist in diesemfall nicht so entscheident aber irgentwann wirst du dir das wohl abgewöhnen müssen :badgrin:
Erfolg ist die Fähigkeit, von einem Misserfolg zum anderen zu gehen,
ohne seine Begeisterung zu verlieren.
-Winston Churchill-

BlackSnake

Community-Fossil

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

7

02.11.2007, 22:39

Re: Anfänger Frage: Klasse in eigener cpp datei...

Zitat von »"NicoWe"«


...
Ja, der Stil ist schlecht, aber wie wärs wenn er erstmal lernt wie man das ganze ohne Kompilerfehler hinbekommt um dann den Stil niederzumachen.
...


naja, besser man lernt es vonanfang an richtig, dann erspart man sich im nachherein eine menge an arbeit ;)

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

8

02.11.2007, 23:35

Klar...wir lernen Englisch....

Also liebe Kinder, ihr habt zwar bis jetzt nie Englisch geschrieben, aber das müsst ihr alles beachten:
1. he/she/it s muss mit
2. Kommatas bei Relativsätzen nur, wenn es ein nicht notwendiger ist
3. Immer schön brav "connectives" nutzen
4. konditionalsätze immer korrekt machen
usw.

Ich glaube es wird klar was ich damit sagen will...
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

9

03.11.2007, 10:19

Guter Vergleich :).
"Games are algorithmic entertainment."

10

03.11.2007, 12:59

Zitat von »"Nox"«

Klar...wir lernen Englisch....

Also liebe Kinder, ihr habt zwar bis jetzt nie Englisch geschrieben, aber das müsst ihr alles beachten:
1. he/she/it s muss mit
2. Kommatas bei Relativsätzen nur, wenn es ein nicht notwendiger ist
3. Immer schön brav "connectives" nutzen
4. konditionalsätze immer korrekt machen
usw.

Ich glaube es wird klar was ich damit sagen will...


Ja sehr schön geschildert. Das einwerfen von Fachbegriffen die mir überhaupt nichts sagen bringt mich nicht wikrlich weiter^^

Ich hab mir jetzt erstmal ein Büchlein zu dem Thema bestellt womit ich dann mein eingestaubtest c++ wissen aufpolieren werde

Werbeanzeige