如何将Main中定义的对象传递给函数?
我的main
函数如下所示:
// 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);
在另一个名为calculateTotal
的函数中,我有以下代码部分:
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);
}
}
问题是Sid
中的turn(Sid)
以及Joe
中的turn(Joe)
不起作用,这是因为它们是在main
中声明的不是calculateTotal
功能。
我已经通过了Player
对象,例如calculateTotal
函数 - player.getPlayerName()
,但如果我放turn(player)
,则会调用turn(Joe)
当他先行而不是我需要的时候,我需要切换到Sid
。
程序中的功能。
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);
这是错误:
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
答案 0 :(得分:0)
传递参考
如果您在main中创建对象并且不想要对象的副本(看起来就是这种情况),请将引用传递给main
中的对象你的calculations
功能:
void calculations(Player& Joe, Player& Sid)
{
//...
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);
}
}
//...
}
如果您不熟悉,引用只是对象的另一个名称,它不会复制您的Player
对象,而是calculations
函数将引用{{1}中的对象功能。