c++ - 如何从函数修改对象?
问题描述
我想将用户使用 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++ 和一般编程的新手。
解决方案
传递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
.
推荐阅读
- react-native - 尝试在snack.expo.io 中使用tipsi-twitter?
- batch-file - 尝试批量获取没有临时文件的变量
- c# - 使用从数组中选择信息
- c++ - 在 C++ 中设计混合结构?
- java - 如何找到总和等于 k 且时间复杂度最小的最长子集(幂集)的长度?
- javascript - 谷歌图表 - 如何居中注释
- python - 根据时间范围制作字符串
- php - PHP isset($_POST["Submit1"])) 不工作
- ruby - 我的程序出错了!!!!此操作没有渲染队列
- neo4j - Neo4j 异常:java.lang.NoClassDefFoundError:非托管扩展上的 org/neo4j/cypher/javacompat/ExecutionEngine