wDeck
,在下面的代码中给我一个 "expression must have a class type"
错误。我已经在其他大多数代码wDeck
void fillDeck(Card* wDeck, void shuffle(Card* wDeck), void deal( Card wDeck[][13]))
我听不懂
因为我只有C ++的基本知识,所以我没有做太多尝试
我使用Visual Studio 2019,Enterprise
#include <iostream>
#include <iomanip>
#include <stdlib.h>
#include <time.h>
using namespace std;
struct Card {
char *face;
char *suit;
};
void shuffle(int[][13]);
void deal(const int[][13], const char* [], const char* []);
void fillDeck(Card*, char* [], char* []);
int main() {
const char* suit[4] =
{ "Hearts", "Diamonds", "Clubs", "Spades" };
const char* face[13] =
{
"Ace", "Deuce", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };
int deck[4][13] = { 0 };
srand(time(0));
shuffle(deck);
deal(deck, face, suit);
return 0;
}
void fillDeck(Card* wDeck, char* wFace[], char* wSuit[])
{
for (int i = 0; i < 52; i++) {
wDeck[i].face = wFace[i % 13];
wDeck[i].suit = wSuit[i / 13];
}
}
void shuffle(Card* wDeck)
{
for (int i = 0; i < 52; i++) {
int j = rand() % 52;
Card temp = wDeck[i];
wDeck[i] = wDeck[j];
wDeck[j] = temp;
}
}
void deal( Card wDeck[][13])
{
for (int i = 0; i < 52; i++)
cout << setiosflags(ios::right)
<<setw(5) << wDeck[ i ].face << " of "
<<setiosflags(ios::left)
<<setw(8) << wDeck[ i ].suit
<<( ( i + 1 ) % 2 ? '\t': '\n' );
}```
答案 0 :(得分:1)
在此代码中
void deal( Card wDeck[][13])
{
for (int i = 0; i < 52; i++)
cout << setiosflags(ios::right)
<<setw(5) << wDeck[ i ].face << " of "
<<setiosflags(ios::left)
<<setw(8) << wDeck[ i ].suit
<<( ( i + 1 ) % 2 ? '\t': '\n' );
}
您定义的
wDeck[][13]
作为多维数组
然后您尝试将其作为一维数组访问
wDeck[ i ]
此操作如下:
在第一次迭代中,wDeck[ 0 ]
的结果是另一个数组,在您的情况下,它包含13个元素
wDeck [i]不是类或结构,它是一个数组,因此没有成员函数。
它得到了回答here
在您的代码中,您可以用代码中的arrayTest
替换here中的wDeck[i]
,然后可以看到两者都犯了相同的错误,因此现在您尝试访问的数组13个元素使用struct成员指针。因此你会得到同样的错误
您需要的是使用嵌套循环
for (int i = 0; i < 4; i++)
{
for (int j =0 ; j<13 ;j++)
{
cout << setiosflags(ios::right)
<<setw(5) << wDeck[ i ][j].face << " of "
<<setiosflags(ios::left)
<<setw(8) << wDeck[ i ][j].suit
<<( ( i + 1 ) % 2 ? '\t': '\n' );
}
}
此代码的作用是,它遍历数组wDeck []的第一层(我认为您在读取代码后将此数组定义为4),结果将是第二层的数组(我可以看到您将其定义为13),然后遍历数组的第二层,然后获得Card类型的对象,可以在其中使用其成员和函数(如果有的话)
我认为您可能需要详细了解多维数组和嵌套循环
请问我的英语