我要做的是:
将功能替换添加到随牌通过值作为参数传递的卡座类。的
卡放在卡座的底部
CardPtr是一个私有类变量,它设置为构造函数中卡片组的顶层卡片
node<card> *newCard; //card pointer
newCard = new node<card>(card(2, 0), NULL); //points to the first card
CardPtr = newCard; //sets cardpointer to newcard
一个单独的类将最上面的卡片拿走并显示该值,从而在该过程中从卡组中删除该节点。我正在尝试将该卡放回底部。那么这是代码:
`void deck::replace(card BottomCard)
{
int count = 0;
node<card> *replaceptr;
bottom = NULL;
replaceptr = new node<card>(BottomCard, NULL);
if (bottom != NULL)
{
bottom->next = replaceptr;
}
else
{
bottom = replaceptr;
}
if (count >= 52)
{
throw overflowError("ERROR: Deck is already full");
}
//CardPtr = new node<card>(BottomCard, NULL);
//bottom->next = CardPtr;
}
我在我的主要代码中实现了它,它似乎取代了卡座顶部的卡。谁能帮我吗?谢谢。
这是我完整的构造函数:
deck::deck() // deck constructor
{
node<card> *newCard; //card pointer
newCard = new node<card>(card(2, 0), NULL); //points to the first card
CardPtr = newCard; //sets cardpointer to newcard
for (int i = 0; i < 4; i++)
{
for (int j = 2; j < 15; j++)
{
if (i == 0 && j == 2) continue;
node<card> *temp = new node<card>(card(j, i), NULL); // temporary pointer sets card value and suit to numbers for value and suit
newCard->next = temp;// sets newcard pointer .next to temp
newCard = temp;// sets newcard to temp
}
}
}
最佳答案
如果CardPtr
总是始终指向最上面的卡片(链接列表的开始),则应更改此方法的代码,以使它不会修改CardPtr
。也许声明另一个局部变量,将其初始化为等于CardPtr
,然后在循环中反复修改该指针(以使CardPtr
永不改变)。
从卡组顶部发牌的另一种方法也可能没有使CardPtr
处于良好状态(指向新的顶部卡),这意味着您有多个问题需要解决。