klasse private zu klasse privat
-
hey
ich hab nen ziemliches problem mit einer meiner klasse:
ich hab ne klasse "schwerter" und ne klasse "Leben", dabei will ich dass ich ne neue klasse aufmache,bsp. "ALLES" und irgendwie draus eine klasse mache?
wenn das nicht geht oder umständlich wäre, wie könnte ich das lösen?folgende klassen hab ich bereits:
- Leben(mit Panzerung&Mana)
- Waffen(schwerter&magie)
- Items(bsp. heiltrank,..)
nun zu meinen zwei fragen:
1: wie kann ich die drei klassen zusammenschmelzen, ohne dass ich eine neue klasse mache und alle codes da reinkopiere und die leeren klassen dann lösche?
2: Was für unterteilungen wären für ein Shooterspiel/Rollenspiel(shooterrollenspiel^^) in einer Konsole basierend gut?
mit freundlichen dank
-
Puh, em es gibt multipe inheritance wovon man allgemein abrät (und bei 3facher wohl erst recht!)
Ansonsten wie ich es machen würde (als Selbst Anfänger):
Der Neuen Klasse jeweils ein Attribut der entsprechenden Klassen geben.
Alle Methoden die du brauchst implementieren und in der Matheide dann nichts weiteres tun als die Methode der Subklasse aufrufen.Welche besseren Methoden es gibt weisz ich nicht.
-
hi shinja.
aber wie mache ich kann ich zbsp. sowas machen(nur als klasse):
int sum; Klasse klassenname1; klassenname1.zahl1 = 3; hauptklasse.sum = klassenname1.zahl1 + klassenname2.zahl2; cout<<sum;
-
Ok, bitte etwas code zeigen.
Was ich meinte wäre sowas wie:
class SubKlasse1{ int wert; public: SubKlasse1(int w):wert(w){} int verdoppeln(){ return wert*=2;} }; class SubKlasse2{ string s; public: SubKlasse2(const string& s2):s(s2){} string add(const string& s2){ return s+=s2;} }; class SubKlasse3{ double wert; public: SubKlasse3(double w):wert(w){} double hochzwei(){ return wert*=wert;} }; class AllesZusammen{ SubKlasse1 sk1; SubKlasse2 sk2; SubKlasse3 sk3; public: AllesZusammen(int a1,const string& a2,double a3):sk1(a1),sk2(a2),sk3(a3){} int verdoppeln(){ return sk1.verdoppeln();} string add(const string& s2){ return sk2.add(s2);} double hochzwei(){ return sk3.hochzwei();} };Alles ungetestet!! Es kann je nach Klassengrösze auf diese Art und weise sehr unübersichtlich werden, weil eine Klasse plötzlich unterschiedliche Dinge tut.
So macht es wenig Sinn, weil die Methoden der SubKlassen recht bis sehr kurz sind, sind die länger wird es Sinn machen (die Klasse alles Zusammen besteht weiterhin nur aus 1-Zeilen Methoden)
ka ob es das ist was du willst oder b es der übliche Weg ist. Wär mir jetzt mal halt (als selbst Anfänger) so eingefallen.
-
hi shinja.
ich meinte natürlich was ich machen soll, weil ich derzeit drei Klassen hab:
- Leben(mit Panzerung&Mana)
- Waffen(schwerter&magie)
- Items(bsp. heiltrank,..)
und draus mache ich ein spiel, doch ich weiß nicht,wie ich das "Binden" muss

-
Wenn ich dich richtig verstanden habe, dann willst du die drei Klassen, die du hast, zusammentun zu einer..
Könntest du dann nicht einfach mit Vererbung arbeiten und eine Klasse erstellen, die alles kapselt und die drei schon vorhandenen Klassen von dieser erben lassen?Du kannst natürlich auch die Klassen so lassen und übergeordnete Methoden schreiben, welche dann über Instanzen der jeweiligen Klasse sich deren Funktionen bedienen und so das Spiel zusammensetzen...
MfG
Hundefutter
-
Clockten schrieb:
nun zu meinen zwei fragen:
1: wie kann ich die drei klassen zusammenschmelzen, ohne dass ich eine neue klasse mache und alle codes da reinkopiere und die leeren klassen dann lösche?
Du solltest es ganz einfach genauso machen wie du diese drei Klassen (hoffentlich) erstellt hast.
Irgendetwas Richtungclass Einheit { public: void kaempfe( Einheit& gegner ); // ... private: Leben leben_; std::vector<Waffe> waffen_; std::vector<Item> items_; };Clockten schrieb:
2: Was für unterteilungen wären für ein Shooterspiel/Rollenspiel(shooterrollenspiel^^) in einer Konsole basierend gut?
"Unterteilungen"?
-
Clockten schrieb:
hi shinja.
ich meinte natürlich was ich machen soll, weil ich derzeit drei Klassen hab:
- Leben(mit Panzerung&Mana)
- Waffen(schwerter&magie)
- Items(bsp. heiltrank,..)
und draus mache ich ein spiel, doch ich weiß nicht,wie ich das "Binden" muss

Und nochmal: Zeig ein bischen Code und sag, was du GENAU willst, dass deine AllesZusammen Klasse danach macht.
So wie ich dich verstanden habe würdest du das suchen, was ich da geschrieben habe: 3 Klassen, die in eienr zusammengefasst werden, um z.B eine EInheit (wie im Post über mir gezeigt) zu bilden.Hmm, dein letzter Post hingegen suggeriert, dass du jetzt einfach willst, dass deine Klassen im Spiel agieren können... dann einfach in der main aufrufen...
Wenn ich dich richtig verstanden habe, dann willst du die drei Klassen, die du hast, zusammentun zu einer..
Könntest du dann nicht einfach mit Vererbung arbeiten und eine Klasse erstellen, die alles kapselt und die drei schon vorhandenen Klassen von dieser erben lassen?Hmm, also da Leben nicht viel mit Waffen gemeinsam hat (auszer dass sie interagieren) wäre es für mich unlogisch, dass beide von der gleichen Basis erben.
Nicht vergessen, in C++ muss nicht alles eine Klasse sein.