所以基本上我有一个Card
对象的数组,如此初始化......
Card *pile[MAX];
其中MAX
为52.此数组是名为CardPile
当我尝试使用for循环将CardPile
drawPile
的实例填充到其52个元素的容量时,我遇到了问题...
这就是我选择这样做的方式:
char faces[] = "A23456789TJQK";
char suits[] = "SHDC";
int k = 0;
for(int i=0; i<13; i++){
for(int j=0; j<4; j++){
drawPile.add(new Card(faces[i], suits[j]));
//the line below is displayed on the console for debugging purposes
cout << drawPile.pile[k]->face << drawPile.pile[k]->suit << ", pile size=" << drawPile.size << endl;
k++;
}
}
以下是.add(Card*)
方法的代码......
void CardPile::add(Card *c){
for(int i=0; i<52;i++){
if(pile[i]){
continue;
} else {
this->pile[i]=c;
size++;
break;
}
}
}
...当我运行程序时,我会在控制台中显示它......
AS, pile size=1
AH, pile size=2
AD, pile size=3
AC, pile size=4
2S, pile size=5
2H, pile size=6
2D, pile size=7
2C, pile size=8
3S, pile size=9
3H, pile size=10
3D, pile size=11
3C, pile size=12
4S, pile size=13
4H, pile size=14
4D, pile size=15
4C, pile size=16
5S, pile size=17
5H, pile size=18
5D, pile size=19
5C, pile size=20
6S, pile size=21
6H, pile size=22
6D, pile size=23
6C, pile size=24
7S, pile size=25
7H, pile size=26
7D, pile size=27
7C, pile size=28
8S, pile size=29
8H, pile size=30
8D, pile size=31
8C, pile size=32
9S, pile size=33
9H, pile size=34
9D, pile size=35
9C, pile size=36
TS, pile size=37
TH, pile size=38
TD, pile size=39
在最后一行输出之后,程序停止运行...我的问题是,为什么程序在第39次调用add()
之后停止而不是完成并将数组填充到其分配的容量?
提前致谢
答案 0 :(得分:0)
你需要初始化piles元素,它默认有随机值:
Card *pile[52] = {};
此外,您可以尝试使用std::vector而不是使用原始指针
的数组std::vector<Card> cards;