C++ Einkaufsliste aber wie?
-
asc schrieb:
asc schrieb:
Ich habe noch neue Bücher bei mir rumfliegen, nur habe ich diese schon einem anderen angeboten dem ich zumindest bis zum Wochenende Zeit lassen will. Ggf. kannst du mich ja mal kontaktieren.
@nimda4: Bislang hat sich der Erste nicht gemeldet, kannst mich wie gesagt bei Bedarf mal kontaktieren (Mail über Profil)
Hast eine Mail von mir
Gruss
Nimda4
-
Hab jetzt trotzdem das ich auf das Buch warte noch eine Frage.
Ich habe ja folgende Klasse:
[code] public: Monster() // Standardkonstruktor : name(""), // Initialiserungsliste leben(0), Angriff(0), Vert(0), Schaden(0) { //Konstruktorrumpf } Monster( // Konstruktor mit Parametern std::string const & name, int leben, int Angriff, int Vert, int Schaden) : name(name), // Zuweisung Parameter zur Membervariablen leben(leben), Angriff(Angriff), Vert(Vert), Schaden(Schaden) { } void test() //Testfunktion { std::cout <<name <<"\n" <<leben <<"\n" <<Angriff <<"\n" <<Vert <<"\n" <<Schaden <<"\n"; } void kampf() { } ~Monster() // Destruktor { } };
[/code]
Ich möchte die void Kampf() so machen das ich dort meine Werte dort Benutzen kann.
Muss ich dafür eine neue Klasse für mich machen da es nicht mit 2 Objekten in einer Methode der gleichen Klasse funktioniert?Oder geht es doch?
Beispiel
Monster Ich("Hans",100,12,14,50);
Monster Oger("Oger",130,11,12,45);Und dann möchte ich hier die Funtkion aufrufen und es soll zuerst das Objekt "ICH" nehmen und dann den Oger.
Wenn es möglich ist möchte ich es imemr so machen das der Erste der oben steht als erstes Objekt nimmt und dann das untere.
Und wenn ich eine Funktion einer anderen Klasse aufrufen möchte kann ich das mit "friend" machen?
Gruss
Nimda4
-
wie bereits gesagt:
void kampf(std::vector<Monster> Gegnergruppe)
{//hier kannst du deine eigenen Werte benutzen und wenn Monster friend deiner //Klasse ist auch die der Monster
}
-
Namenloser324 schrieb:
wie bereits gesagt:
void kampf(std::vector<Monster> Gegnergruppe)
{//hier kannst du deine eigenen Werte benutzen und wenn Monster friend deiner //Klasse ist auch die der Monster
}also ungefähr so?
[code] class Ich { public: status werte; friend class Monster; { } void kampf(std::vector<Monster> Gegnergruppe) { // Kampvorgang } };
[/code]
[code] class Monster { status werte; };
[/code]
Ist das so richtig?
Oder hast du gerade so ein Beispiel welches du posten könntest?Gruss
Nimda4
-
Wieso muss es denn per value sein ?
-
cvcv schrieb:
Wieso muss es denn per value sein ?
Muss es nicht, mir ist jede möglichkeit recht so fern sie Ihren Zweck erfüllt
Gruss
Nimda4
-
Für mich ist einfach das Problem wie ich eine Kampffunktion machen kann, die folgende Sachen kann:
Meine Statuswerte verwendem, die des Gegners.
die methode roll von der kalsse dice verwenden und die ausgegebenen Werte mit den Statuswerten vergleichen.
beispiel:
Ausgabe: meinName, ihr dürft angreiffen.
dice roll() WürfelWürfeln.
wenn WürfelWürfel <=meinAngriff, dann Treffer
sonst ausgabe Troll darf angreiffen...Gruss
nimda4
-
Naja, dazu war doch der Vorschlag mit dem vektor ... ?
... std::vector<Monster> mobs; mobs.push_back(someMobInstance1); // Einfach den Vektor mit den existierenden Instanzen deiner Monster-Klasse befüllen mobs.push_back(someMObInstance2); fight(mobs); // Den befüllten Vektor an deine Kampf-Funktion übergeben ... void fight ( std::vector<Monster>& mobs ) { // Jetzt kannst du hier wunderbar auf die Werte der einzelnen Monster-Instanzen zugreifen und dein komisches Roll-Gedöns da machen ;) }
-
cvcv schrieb:
Naja, dazu war doch der Vorschlag mit dem vektor ... ?
... std::vector<Monster> mobs; mobs.push_back(someMobInstance1); // Einfach den Vektor mit den existierenden Instanzen deiner Monster-Klasse befüllen mobs.push_back(someMObInstance2); fight(mobs); // Den befüllten Vektor an deine Kampf-Funktion übergeben ... void fight ( std::vector<Monster>& mobs ) { // Jetzt kannst du hier wunderbar auf die Werte der einzelnen Monster-Instanzen zugreifen und dein komisches Roll-Gedöns da machen ;) }
o.O wow.
Danke viel mals bin am rumtesten, hab nur noch 2 kleine Probleme:
es sagt mir bei fight(mobs); "error C3861: 'fight': identifier not found."
und was wenn ich ein Objekt einer anderen Klasse mit mehr parametern verwenden möchte? (habs ausprobiert so gehts nicht
)
Gruss
Nimda4
-
Werd mal konkret, bitte. Wenn du die fight-funktion auch für eine andere Klasse haben willst, dann gibt ihr entweder einen 2. Parameter mit einem std::vector<AndereKlasse>& oder du überlädst die Funktion. -> Google.
Zu Deinem Fehler : Forward-Declaration, schreib den die Funktionssignatur vor deine main() :
void fight( std::vector<Monster>& );