Ich bin neu in der Codierung, also werde ich versuchen, so gut wie möglich zu erklären.C++ - Hilfe ein Objekt in eine andere Funktion übergeben (Objekt in Main definiert)
Dies ist der Fehler, den ich bekommen haben:
// Initialising the players
Player Joe;
Player Sid;
Joe.setPlayerName("Joe");
Sid.setPlayerName("Sid");
Joe.setPercentage(71);
Sid.setPercentage(73);
Joe.setTotal(501);
Sid.setTotal(501);
Joe.setThrows(0);
Sid.setThrows(0);
// Starts Joe's turn (and the game)
turn(Joe);
nun innerhalb einer anderen Funktion den folgenden Code-Abschnitt calculateTotal
, die ich habe, genannt:
1>f:\abertay\programming\coursework\coursework\source.cpp(149): error C2065: 'Sid' : undeclared identifier
1>f:\abertay\programming\coursework\coursework\source.cpp(153): error C2065: 'Joe' : undeclared identifier
1>f:\abertay\programming\coursework\coursework\source.cpp(169): error C2065: 'Sid' : undeclared identifier
1>f:\abertay\programming\coursework\coursework\source.cpp(173): error C2065: 'Joe' : undeclared identifier
Meine main
Funktion wie folgt aussieht:
else if (potentialTotal < 2 && potentialTotal != 0)
{
potentialTotal = total; // Total remains the same
player.setThrows(0); // Resets their throws
// Switch player's turn
if (player.getPlayerName() == "Joe")
{
turn(Sid);
}
else if (player.getPlayerName() == "Sid")
{
turn(Joe);
}
}
Das Problem, das ich habe, ist th ist, die Sid
in turn(Sid)
sowie Joe
in turn(Joe)
nicht funktionieren, das ist, weil sie in der main
und nicht die Funktion erklärt werden, bin ich mir bewusst. Ich weiß jedoch nicht, wie ich das richtig beheben kann.
ich das Player
Objekt durchlaufen haben wie in calculateTotal
Funktion gesehen - player.getPlayerName()
zum Beispiel, aber wenn ich turn(player)
setzen, würde dies turn(Joe)
nennen, wie er zum ersten Mal geht das ist nicht das, was ich brauche, muss ich es Sid
wechseln.
Wenn Sie zusätzliche Informationen benötigen, wenden Sie sich bitte an.
EDIT:
ich die Funktionen Programm enthalten sind, zu sehen, ob das überhaupt hilft.
void turn(Player& player);
void bullseye(Player& player);
void singleThrow(int requiredValue, Player& player);
void doubleThrow(int dartThrow, Player& player);
void trebleThrow(int dartThrow, Player& player);
void calculateTotal(Player& player);
Vielen Dank im Voraus!
P.S. Versuchen Sie nicht, erweiterte Terminologie zu verwenden, ich habe gerade erst angefangen zu programmieren, also werde ich wahrscheinlich nicht verstehen.
[mcve] bitte. Ich denke, dein Code ist klein genug, dass alles hier passt. – AndyG
Es klingt wie Sie vielleicht Ihr Design überdenken möchten. Wenn Sie Objekte in 'main' benötigen, übergeben Sie sie normalerweise an eine andere Funktion. Es klingt jedoch so, als wären diese Objekte "global". Betrachten Sie vielleicht einen objektorientierten Ansatz, bei dem 'Joe' und' Sid' Mitglieder eines größeren Objekts sind. Dann übergeben Sie dieses Objekt (statt aller Variablen separat) an Funktionen. – AndyG
Es würde helfen, Ihre Deklaration der Berechnungen zu sehen. Ich vermute, dass Sie einen Zeiger auf das Spielerobjekt als Argument verwenden müssen, anstatt das Spielerobjekt selbst zu übergeben. – BHawk