【发布时间】:2014-10-18 14:11:33
【问题描述】:
我有 3 个 Player 对象,它们作为函数中的引用参数传递。
该函数执行以下操作:
- 创建 3 个对象的
vector,并根据它们的分数(数据成员)对它们进行冒泡排序。 - 然后它检查第一、第二或第三等级并返回调整大小的
vector。
在main 函数中,当我遍历vector 时,我能够打印获胜者和她的奖励,但它似乎并没有更新实际对象。 如何更新对象?
这是我目前所拥有的:
int enterBet(int balance, int maxBet);
vector <Player> chkWinner(Player &a, Player &b, Player &c, int pot);
bool sorting_method(Player &_1, Player &_2) {
//Bigger numbers go first
return _1.m_total > _2.m_total;
}
int main()
{
Player *player1 = new Player;
Player *player2 = new Player;
Player *player3 = new Player;
vector <Player> winnerArr;
winnerArr.resize(3);
int pot = 0;
int betAmount = 0;
int maxBet = 10;
player2->m_name = "Kelly";
player3->m_name = "Martha";
int x, y, z;
winnerArr[0] = *player1;
winnerArr[1] = *player2;
winnerArr[2] = *player3;
sort(winnerArr.begin(), winnerArr.end(), sorting_method);
cout << winnerArr[0].m_total << ", "
<< winnerArr[1].m_total << ", "
<< winnerArr[2].m_total << endl;
x = winnerArr[0].m_total;
y = winnerArr[1].m_total;
z = winnerArr[2].m_total;
if (x == y && x == z){
cout << "Divide pot by 3" << endl;
//totalArr.resize(3);
}
else if (x == y && x != z){
cout << "Divide pot by 2" << endl;
winnerArr.resize(2);
}
else{
cout << "Pay full Pot" << endl;
winnerArr.resize(1);
}
int payout;
if (winnerArr.size() == 3){
payout = ((pot * 5) / 3);
}
else if (winnerArr.size() == 2){
payout = ((pot * 5) / 2);
}
else if (winnerArr.size() == 1){
payout = (pot * 5);
for (int i = 0; i < winnerArr.size(); i++){
cout << winnerArr[i].m_name << " wins " << payout << endl;
winnerArr[i].m_balance += payout;
cout << winnerArr[i].m_balance << endl;
}
}
cout << player1->m_name << "'s total: " << player1->m_balance << endl;
cout << player2->m_name << "'s total: " << player2->m_balance << endl;
cout << player3->m_name << "'s total: " << player3->m_balance << endl;
break;
}
【问题讨论】:
-
您返回一个包含玩家副本的向量 - 这是您的意图吗?我建议您通过
vector<Player>&并使用新订单对其进行修改。这也允许您拥有任意数量的玩家。我建议你使用内置的排序功能。这个循环有什么意义:for (int i = 0; i < 1; i++) -
对不起,我不明白这一点。我尝试传递向量数组的引用,但它为所有玩家的总数输出 0。我希望宣布获胜者并将奖励添加到实际玩家而不是他的副本。
-
贴出你试过的代码。
-
1.你为什么说
vector array?vector就够了。 2. 你的代码没有编译。请发布可编译的代码。 3.当你重写了chkWinner函数时,请删除早期版本或至少将其注释掉。并显示修改后的main函数。 4. 最后,你的Player班级是什么样子的?也发布该代码。 -
gargankit,那是复制错误,我已经修改了,谢谢