c++ - 在 C++ 中输出枚举类类型的向量元素
问题描述
我已经创建了用于 C++ 扑克游戏的纸牌和套牌类,但是,我正在尝试检查我的矢量元素分配是否正确并且在控制台上显示它们时遇到问题。我有一个用于西装的枚举类和一个用于等级的整数值。我看到我的卡片组向量正在生成 52 张卡片,但我不确定如何使用display()
每个向量元素的卡片类函数正确地将其显示在屏幕上。任何帮助,将不胜感激。
注意:我还猜测另一种方法是重载输出流运算符以显示向量元素,该元素是具有枚举类参数的对象,但也不确定该语法会是什么样子。
int main(){ Deck deck();}
卡片.h
#pragma once
#include <stdlib.h>
#include <iostream>
using namespace std;
enum class Suit { Hearts, Diamonds, Spades, Clubs };
class Card
{
private:
Suit m_suit;
int m_rank;
public:
Card();
Card(int r, Suit s);
void display();
int getRank();
void setRank(int);
Suit getSuit();
void setSuit(Suit);
};
卡片.cpp
#include "Card.h"
#include <iostream>
#include <string>
Card::Card(): m_rank(0), m_suit(Suit::Hearts)
{
}
Card::Card(int r, Suit s)
{
m_rank = r;
m_suit = s;
}
void Card::display()
{
if (m_rank == 1) // for number cards, show value
{
std::cout << "Ace";
}
else if ((2 <= m_rank) && (m_rank <= 10))
{
std::cout << m_rank;
}
else
{
switch (m_rank)
{
case 11:
std::cout << "Jack";
break;
case 12:
std::cout << "Queen";
break;
case 13:
std::cout << "King";
break;
default:
std::cout << "INVALID RANK";
}
}
switch (m_suit) // display suit
{
case Suit::Hearts:
std::cout << " of Hearts";
break;
case Suit::Diamonds:
std::cout << " of Diamonds";
break;
case Suit::Spades:
std::cout << " of Spades";
break;
case Suit::Clubs:
std::cout << " of Clubs";
break;
};
}
int Card::getRank()
// return the numeric value of a card
{
return (m_rank);
}
甲板.h
#pragma once
#include <vector>
#include "Card.h"
class Deck
{
private:
Card card;
std::vector<Card> m_deck;
public:
Deck();
void shuffle();
void grabCard();
};
甲板.cpp
#include "Deck.h"
#include "Card.h"
#include <vector>
Deck::Deck()
{
for (int i = 1; i < 14; i++)
{
for (int j = int(Suit::Hearts); j <= int(Suit::Clubs); j++)
{
m_deck.push_back(Card(int(i), Suit(j))); //passing the card constructor to create a card object, then store it as a vector element
int counter = 0; // use to print out each element
std::cout << m_deck[card.display()]; //output each card obect via display method
std::cout << "\t\n";
counter++;
}
}
}
void Deck::shuffle()
{
}
void Deck::grabCard()
{
}
解决方案
要显示矢量元素,您应该调用要显示display()
的矢量元素。
std::cout << m_deck[card.display()];
应该
m_deck.back().display();
让它显示最后推送的卡片。
也是int main(){ Deck deck();}
一个只有函数声明的主函数,Deck::Deck()
不会被调用。
要调用构造函数,它应该是int main(){ Deck deck;}
.
推荐阅读
- javascript - 交叉点观察者 API 出现在滚动条上
- docker - Docker 容器和隐藏的 CPU 利用率
- excel - 如何获得动态数组的每一行的总和?
- javascript - 将 url 参数替换为 jquery 中选定的列表值
- c++ - 使用 clang 编译时避免使用 xxx.dSYM
- python - 如何在python中的另一个列表中迭代一个列表
- jboss - jboss 门户 2.4 迁移到 jboss6
- flutter - 没有构造函数“MaterialApp”。具有在类“MaterialApp”中声明的匹配参数
- python - React 在组件中解构属性的 Python 等价物是什么?
- python - 设置 Keras 点轴