c++ - 编译器通过将数组传输到函数给我一个错误
问题描述
我自己学习 c++ 并阅读此链接上的教程:https ://www.learncpp.com 在我的练习中,我必须从数组库中编写一个数组并用卡片填充它。在我填满它之后,我必须显示所有带有 std::cout 的卡片。
但是,当我将数组传输到 main.cpp 中的函数 printCard 时,我得到了一个我无法解决的错误。
在下面你可以看到我的整个程序。谢谢您的帮助
甲板.h
#include<array>
enum CardRank {
RANK_2,
RANK_3,
RANK_4,
RANK_5,
RANK_6,
RANK_7,
RANK_8,
RANK_9,
RANK_10,
RANK_JACK,
RANK_QUEEN,
RANK_KING,
RANK_ACE,
MAX_RANK
};
enum CardSuit {
SUIT_HEART,
SUIT_CLUBS,
SUIT_SPARE,
SUIT_DIAMONDS,
MAX_SUIT
};
struct Card {
CardRank rank;
CardSuit suit;
};
void printCard(Card card);
std::array<Card, 52> createDeck();
void printDeck(std::array<Card, 52>* deck);
甲板.cpp
#include "Deck.h"
void printCard(Card& card) {
switch (card.rank) {
case CardRank::RANK_2:
std::cout << "2";
break;
case CardRank::RANK_3:
std::cout << "3";
break;
case CardRank::RANK_4:
std::cout << "4";
break;
case CardRank::RANK_5:
std::cout << "5";
break;
case CardRank::RANK_6:
std::cout << "6";
break;
case CardRank::RANK_7:
std::cout << "7";
break;
case CardRank::RANK_8:
std::cout << "8";
break;
case CardRank::RANK_9:
std::cout << "9";
break;
case CardRank::RANK_10:
std::cout << "10";
break;
case CardRank::RANK_JACK:
std::cout << "J";
break;
case CardRank::RANK_QUEEN:
std::cout << "Q";
break;
case CardRank::RANK_KING:
std::cout << "K";
break;
case CardRank::RANK_ACE:
std::cout << "A";
break;
default:
std::cout << "?";
break;
}
switch (card.suit) {
case CardSuit::SUIT_HEART:
std::cout << "H ";
break;
case CardSuit::SUIT_SPARE:
std::cout << "S ";
break;
case CardSuit::SUIT_CLUBS:
std::cout << "C ";
break;
case CardSuit::SUIT_DIAMONDS:
std::cout << "D ";
break;
default:
std::cout << "?";
break;
}
}
std::array<Card, 52>createDeck() {
std::array<Card, 52> deck;
std::size_t card{ 0 };//muss alle karten durchlaufen
//Scheleifen die die karten werte geben
for (std::size_t suit{ 0 }; suit < CardSuit::MAX_SUIT; suit++) {
for (std::size_t rank{ 0 }; rank < CardRank::MAX_RANK; rank++) {
//Wegen sizeType muss hier gecastet werden
//sonst Fehler: 2 unterschiedliche typen
deck[card].rank = static_cast<CardRank>(rank);
deck[card].suit = static_cast<CardSuit>(suit);
card++;
}
}
return deck;
}
void printDeck(const std::array<Card, 52>& deck) {
for (std::size_t card{ 0 }; card < 52; card++) {
printCard(deck[card]);
}
}
主文件
#include<iostream>
#include "Deck.h"
#include <array>
int main() {
std::array<Card, 52> deck{ createDeck() };
printDeck(deck);
return 0;
}
解决方案
推荐阅读
- r - 计算断开的子网数
- epub - 在 EPUB 文件中,什么会
意思是? - django - 前端代码直接访问http而不是https并导致混合内容错误
- python - 如何将列表变成contourf可以理解的2x2数组
- python - 在 C 中将浮点数转换为字符串,然后在 Python 中读取
- javascript - Chrome DedicatedTools 停止为 Node.js 工作
- pandas - 将长格式重塑为宽格式,每个长格式观察有两列
- c# - 从串口读取的数据是分开的。里面的代码+结果
- c++ - 我想将 c++(pytorch 框架)中的 cnn 训练模型导入 vhdl 以在 DE1-SOC FPGA 上使用它,有没有办法做到这一点?
- c# - 我如何知道 MDI 子窗体在视觉上发生了变化?