Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
06.11.2001, 18:46
Son-Goten



hi leutz!
hmm... kann mir wer sagen, wo ich im inet ein leicht zu verstehendes tutorial zur anwendung von klassen finde? ich muss da wohl entweder was bei der syntax falsch machen oder doch einiges nicht verstehen...
danke

--

zum Seitenanfang zum Seitenende Profil || Suche
001
06.11.2001, 19:33
Kriz



Such nach "C++ Klassen Tutorial" oder "C++ class tutorial"...

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
002
06.11.2001, 20:37
Tron



www.cplusplus.com

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
003
06.11.2001, 23:02
SAugSTelle



www.stefanzerbst.de
da is n echt kewles :D
das von the Wanderer

--

zum Seitenanfang zum Seitenende Profil || Suche
004
07.11.2001, 15:11
Laser



das von the wanderer ist wirklich sehr leicht zu verstehehen:
http://www-public.tu-bs.de:8080/~y0005571/spiele/cpptut/inhalt.htm

--

zum Seitenanfang zum Seitenende Profil || Suche
005
10.11.2001, 20:02
Son-Goten



danke ^-^

[edit]
hmm.. nun gut... ich bin TheWanderers tut durchgegangen...
das problem, das ich jetzt habe, schaut wie folgt aus:

class ThePlayer
{
public:
char name;
int age;
int health;
int damage;

void fight ();
};

void ThePlayer::fight()
{
while(health>=0)
{
cout<<"Schaden?"<<endl;

o.k., soweit klar.. allerdings........
cin>>Spieler.damage; <--- dies hier funktioniert nicht, verständlicherweise...
allerdings muss ich für meine funktion fight die werte leben-spieler, -computer sowie schaden-spieler, -computer einbringen......
ist dies möglich?

danke, goten
[/edit]

--


Dieser Beitrag wurde am 10.11.2001 um 20:59 von Son-Goten bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
006
11.11.2001, 10:47
Kriz



Du must erstmal das objektorientierte Denken lernen, sonst ist C++ für dich nur ein Rätsel ohne Ende. Die Klasse ThePlayer ist ein Objekt. Ein Objekt zeichnet sich dadurch aus, daß es von seiner Umwelt (andere Objekte, globale Funktionen usw.) vollkommen unabhängig ist. Es ist praktisch von seiner Umwelt abgekapselt. Trotzdem muß es mit seiner Umwelt agieren, Botschaften senden und empfangen können. Aus diesem Grund teilt sich ein Objekt zumeist in zwei interne Bereiche auf: Daten und Funktionen, d.h. jedes Objekt hat seine eigenen, spezifischen Funktionen (Methoden genannt) und seine eigenen Variablen (Elemente genannt).
Man kann den Zugriff auf Methoden und Elemente von außen selber steuern, indem man Zugriffsattribute erteilt (public, protected und private). Allerdings muß man in C++ in der Klasse Bereiche definieren (in Java z.B. kann man direkt Methoden und Elemente mit Zugriffsattributen definieren):
Quellcode:class ThePlayer
{
private:
int privatElement;
void PrivatMethode(void);
protected:
int protectedElement;
void ProtectedMethode(void);
public:
int publicElement;
void PublicMethode(void);
};

Die Zugriffsattribute spielen in deinem Fall nur eine Rolle: Nur Methoden und Elemente, die public sind, kann man von außen direkt ansprechen:
Quellcode:ThePlayer tp;
tp.publicElement = 100;
tp.PublicMethode();

Alle anderen Methoden und Elemente können nur durch sogenannte "Zugriffsmethoden" erreicht werden, die ebenfalls allesamt public sein müssen. Um also an protected oder private Sachen ranzukommen, müßtest du sowas definieren:
Quellcode:class ThePlayer
{
private:
...
protected:
...
public:
...
int GetProtected(void);
void CallProtected(void);
int GetPrivate(void);
void CallPrivate(void);
};

int ThePlayer::GetProtected()
{
return protectedElement;
}

void ThePlayer::CallProtected()
{
this->ProtectedMethode();
}

int ThePlayer::GetPrivate()
{
return privateElement;
}

void ThePlayer::CallPrivate()
{
this->PrivateMethode();
}

Der Unterschied zwischen private und protected ist übrigens der, daß bei einer Klassenableitung (class ThePlayer2 : public ThePlayer {...};) die abgeleitete Klasse ThePlayer2 nur Zugriff auf public und protected von ThePlayer hat. Private bleibt der abgeleiteteten Klasse verwehrt.

Deine Klasse müßte also so (korrekterweise =) aussehen:
Quellcode:class ThePlayer
{
// Gibt man als erstes nichts an, dann ist der Bereich automatisch private...
char* name;
int age;
int health;
int damage;

public:
ThePlayer(); // Konstruktor
~ThePlayer(); // Destruktor
char* GetName(void);
int GetAge(void);
int GetHealth(void);
int GetDamage(void);
};

ThePlayer::ThePlayer()
{
// Elementdefinitionen beim Erzeugen des Objekts
name = "";
age = 25;
health = 100;
damage = 0;
}

ThePlayer::~ThePlayer()
{
// Hier Code, der ausgeführt werden soll beim Zerstören des Objekts
}

char* ThePlayer::GetName()
{
return name;
}

int ThePlayer::GetAge()
{
return age;
}

int ThePlayer::GetHealth()
{
return health;
}

int ThePlayer::GetDamage()
{
return damage;
}

Um nun die Werte auch von außerhalb setzen zu können, mußt du dir nun auch noch passende Set-Methoden einfallen lassen (z.B. void ThePlayer::SetName(char* name) usw.). Es gibt noch sehr viel mehr über Klassen und Objekte zu erzählen, aber das sprengt hier den Rahmen! Such dir also ein gutes Tut oder kauf dir ein gutes Buch über C++.

Cu

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)


Dieser Beitrag wurde am 11.11.2001 um 10:49 von Kriz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
007
11.11.2001, 12:16
Son-Goten



danke für das ganze.... *Gg*

naja.. eigentlich hatte ichn anderes problem, das werd ich aber umgehen...

jedenfalls war der vortrag sehr lehrreich! ^-^

thnx
goten

--

zum Seitenanfang zum Seitenende Profil || Suche