Anfaengercode, kleiner unauffindbarer Fehler
-
Hi, warum funktioniert die funktion berechnepunkte nicht? Es wird nichts dazuaddiert. Danke!
#include <iostream> #include <string> using namespace std; struct spieler { int energie; int punkte; int team; }; void berechnepunkte (spieler *spiel1, int bonuspunkte); void zeigespieler (spieler &spiel1); void ladelevel (int levelangabe); int main () { spieler spieler1; spieler1.energie = 1000; spieler1.punkte = 0; spieler1.team = 1; int level = 20; int bonus = 1000; ladelevel (level); zeigespieler (spieler1); berechnepunkte (&spieler1, bonus); zeigespieler (spieler1); cout << "Gang Bang Brother!"; } void ladelevel (int levelangabe) { cout << "Gegenwaertiges Level: " << levelangabe << endl; } void zeigespieler (spieler &spiel1) { cout << "Spielerenergie: " << spiel1.energie << endl; cout << "Spielerpunkte: " << spiel1.punkte << endl; cout << "Team: " << spiel1.team << endl; } void berechnepunkte (spieler *spiel1, int bonuspunkte) { spiel1->punkte += bonuspunkte; }
-
Es ist zwar ein bisschen wirr (warum benutzt du manchmal Referenzen, manchmal Pointer?), aber an sich funktioniert es doch:
http://ideone.com/BSaVpt
Welche andere Ausgabe erwartest du?
-
es funktioniert, du gibst nur erst die daten aus bevor du sie berechnet hast..
-
Hey die unterschiedlichen Parameterübergaben verwende ich nach dem Muster von c++ für spieleprogrammierer. Seite 175. Dort stehen Situationen, wann man was benutzen sollte.
Ansonsten ist der Fehler halt, das zeigespieler();, beim zweiten mal, 2000 punkte ausgeben sollte. Wegen der Rechnung in Zeile 27.
@shadow, ich verstehe immernoch nicht wo der Fehler ist..nach der berechnung gibt er die daten doch nochmal aus
-
kamelkacke schrieb:
Hey die unterschiedlichen Parameterübergaben verwende ich nach dem Muster von c++ für spieleprogrammierer. Seite 175. Dort stehen Situationen, wann man was benutzen sollte.
Und da steht nicht, dass man const-Referenzen verwenden soll? Verdächtig.
-
Doch das steht da..aber ist doch garnicht relevant
-
Ansonsten ist der Fehler halt, das zeigespieler();, beim zweiten mal, 2000 punkte ausgeben sollte. Wegen der Rechnung in Zeile 27.
Die Spielerpunkte sind vorerst 0. Dann wird der Bonus, 1000, addiert - nun sind sie 1000.
Das ist auch völlig stimmig mit den Ausgaben von Ideone. Hast du vergessen, den Punkten am Anfang 1000 zuzuweisen?
-
Nein, das ist nur wegen dem Kommentar von SeppJ.
Einen Fehler seh ich nicht, es sollte 2000 ausgegeben werden. Was passiert denn?Energie ist 1000, nicht Punkte -.-
-
Boah wie dumm. Ja hab ganze zeit auf ne 2000 bei der Ausgabe gewartet. Danke
-
Bashar schrieb:
kamelkacke schrieb:
Hey die unterschiedlichen Parameterübergaben verwende ich nach dem Muster von c++ für spieleprogrammierer. Seite 175. Dort stehen Situationen, wann man was benutzen sollte.
Und da steht nicht, dass man const-Referenzen verwenden soll? Verdächtig.
Das findest du da dran verdächtig? Fehlende const-correctness kann man sich ja später noch mal schnell angewöhnen. Aber was soll der Pointer da? Gibt's in dem Buch eine Begründung?
-
Ich kenn das Buch nicht. Die Konvention findest du aber z.B. auch bei Lakos (hatte ich hier vor ein paar Jahren schonmal zitiert) und Stroustrup.