将对象传递到函数中(在 Main 中定义的对象)

Passing an object into a function (Object defined in Main)

本文关键字:对象 Main 定义 函数      更新时间:2023-10-16
如何将

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);
    }
}

问题是turn(Sid)中的Sid以及turn(Joe)中的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:abertayprogrammingcourseworkcourseworksource.cpp(149): error C2065:    'Sid' : undeclared identifier
1>f:abertayprogrammingcourseworkcourseworksource.cpp(153): error C2065: 'Joe' : undeclared identifier
1>f:abertayprogrammingcourseworkcourseworksource.cpp(169): error C2065: 'Sid' : undeclared identifier
1>f:abertayprogrammingcourseworkcourseworksource.cpp(173): error C2065: 'Joe' : undeclared identifier

传递引用

如果在 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函数将引用main函数中的对象。

相关文章: