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
--
|
|
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)
|
|
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
|
|
Profil || Suche
|
003
06.11.2001, 23:02
SAugSTelle
|
www.stefanzerbst.de da is n echt kewles :D das von the Wanderer
--
|
|
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
--
|
|
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.
|
|
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):
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:
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:
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:
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.
|
|
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
--
|
|
Profil || Suche
|