首页 > 解决方案 > 如何从函数修改对象?

问题描述

我想将用户使用 work 函数时获得的硬币添加到来自名为 Player 的类中名为 user 的对象。

int Player::addCoins(int coinAmount) {
    coins += coinAmount;
}


int DoWork()
{
    const int MAX_NUMBER = 5000;
    int randomNumber;
    srand(time(0));
    randomNumber = (rand () % MAX_NUMBER);
    cout << "You went to work and earned: $" << randomNumber << endl;
    user.addCoins(randomNumber); // user not in scope.
    return randomNumber;
}

我不想在 DoWork 函数中创建用户对象,因为其他函数也会向对象添加“硬币”和其他东西。但是,如果我不这样做,那么我会收到一个错误,因为它不在范围内。

那么,当对象处于主要状态时,如何让许多不同的函数向对象添加“硬币”?

如果用户对象必须在函数内部怎么办?

我不在user.addCoins(randomNumber);main 方法中做,因为那样我每次用户调用它时都必须这样做。

是的,我是 C++ 和一般编程的新手。

标签: c++

解决方案


传递user对函数的引用:

int DoWork(Player& user)
{
    const int MAX_NUMBER = 5000;
    int randomNumber;
    srand(time(0));
    randomNumber = (rand () % MAX_NUMBER);
    cout << "You went to work and earned: $" << randomNumber << endl;
    user.addCoins(randomNumber); // calls method on the parameter
    return randomNumber;
}

现在您的函数可以在任何一个上工作,Player而不仅仅是一个名为user.


推荐阅读