So habe ich dieses Stück Code für ein Dart-Spiel, in meiner Header-Datei:Weird-Ausgang mit Klasse Getter Funktion C++
class Player
{
private:
string playerName;
int bullAccuracy;
int outerAccuracy;
int singleAccuracy;
public:
//getters
string& getName();
int& getBullAccuracy();
int& getSingleAccuracy();
//setters
void setName(string& name);
void setBullAccuracy(int& bull_accuracy);
void setSingleAccuracy(int& single_accuracy);
};
Und dann die entsprechenden Getter und Setter-Funktionen in der CPP-Datei sieht wie folgt aus :
All dies sehr einfach und grundlegende Getter/Setter-Code für eine Klasse Daten Mitglieder, nicht wahr?
In der main() -Funktion habe ich jedoch die Namen für meine Spieler, ihre verschiedenen Genauigkeiten, und zeige sie dann über die Getter. Alle diese werden unter Verwendung von Vektoren von Objekten und Iteratoren getan, wie folgt aus:
vector<Player> player(2);
vector<Player>::iterator modIter;
int bAccuracy, sAccuracy;
string playerName;
cout << "Input the name of the players: " << endl;
for (modIter = player.begin(); modIter != player.end(); modIter++)
{
cin >> playerName;
modIter->setName(playerName);
}
cout << "\nSet the players' bull accuracy:" << endl;
for (modIter = player.begin(); modIter != player.end(); modIter++)
{
cout << modIter->getName() << ": ";
cin >> bAccuracy;
modIter->setBullAccuracy(bAccuracy);
}
cout << "\nSet the players' single hit accuracy: " << endl;
for (modIter = player.begin(); modIter != player.end(); modIter++)
{
cout << modIter->getName() << ": ";
cin >> sAccuracy;
modIter->setBullAccuracy(sAccuracy);
}
//display values to check program working well so far
for (modIter = player.begin(); modIter != player.end(); modIter++)
{
cout << modIter->getBullAccuracy() << endl;
cout << modIter->getOuterAccuracy() << endl;
cout << modIter->getSingleAccuracy() << endl;
}
und nach dem Code ausgeführt wird, und die Eingabe in der Eingabe „Joe“ und „Sid“ für die Namen, 71 und 73 jeweils für Stier Genauigkeit und dann 80 für beide Spieler für die einzelnen Treffergenauigkeit, das ist, was meine Konsole Ausgänge:
Geben Sie den Namen der Spieler:
Joe
Sid
Stellen Sie den Stier Genauigkeit des Spielers:
Joe: 71
Sid: 73 // dies bedeutet, dass zumindest die Namen richtig eingestellt wurden
Stellen Sie die einzelnen Treffergenauigkeit des Spielers:
Joe: Sid 80
: 80
// und hier ist der seltsame Ausgang
80 // dies soll 71
-842150451 // und diese 80
80 // hier sein die 73
-842150451 // und hier wieder 80
So was genau passiert ist, weil dies eine grundlegende und vertraute Verwendung von Gettern und Settern ist, und ich habe keine Ahnung, wie ich das selbst beheben kann, da ich das Problem nicht sehe. Gibt es etwas in meinem Code, das ich nicht sehen kann und das die Ergebnisse verändert?
Vielen Dank im Voraus für Ihre Hilfe
akzeptieren Sie die folgende Antwort. Es wird helfen, einige Punkte für Sie beide zu bekommen. – Guru