c++ - CardDeck 构造函数
问题描述
我试图用构造函数创建一个类 CardDeckvector<Card> CardDeck
我的卡片类看起来像这样
Card.h 文件:
enum Suit{clubs = 0, diamonds, hearts, spades};
enum Rank{two = 2, three, four, five, six, seven, eight,
nine, ten, jack, queen, king, ace};
class Card{
private:
Suit s;
Rank r;
public:
Card(Suit suit, Rank rank)
:s{suit}, r{rank} {};
Suit getSuit() const;
Rank getRank() const;
string toString() const;
string toStringShort() const;
};
我现在想做一个 CardDeck 类来构造vector
cards
内部CardDeck
CardDeck.h 文件:
#include "Card.h"
class CardDeck
{
private:
vector<Card> cards{}; //Where I'm stuck
public:
//...
};
有没有办法像这样Suits
循环遍历所有内容Ranks
伪代码:
for s in Suits:
for r in Ranks:
cards.push_back(Card{s, r})
解决方案
由于您使用 anenum
您可以使用整数来完成它,
for (int i = 0; i < 4; i++) // Suit
for(int j = 2; j < 15; j++) // Rank
cards.push_back(Card{static_cast<Suit>(i), static_cast<Rank>(j)});
如果您不知道enum
s 是如何工作的,它们就像 const 整数一样。它们只是有一个名称,可以更轻松地访问和使用(如果可以的话,也是安全的)。另一个属性是它会随着价格的上涨而增加价值,
enum Count {
Zero, // Default is 0.
One, // Since the before one is 0, this is 1.
Two, // Since the before one is 1, this is 2.
Three // Since the before one is 2, this is 3.
};
看到图案了吗?由于 an 的基础类型enum
是整数,因此您可以使用它int
来为构造函数赋值。
奖励:您可以enum
像这样声明 s 整数类型,
enum Counter : long long { ... };
推荐阅读
- filter - 如何在 aws 控制台上过滤 dynamodb 中的地图?
- java - 如何从arraylist中获取最大元素?
- python - 我正在尝试使用 python 3 将 json 插入到 postgres (pgadmin4) 表中,但我不断得到 null
- javascript - 正则表达式在引号之外的换行符上拆分
- python - Python - 将列表的字典值相乘并将结果存储回不同的字典中?
- ios - 在 collectionView 的 indexPath 处传递一个值
- sql - XSLT for-each,试图创建标题行结构
- azure-aks - AKS 花费大量时间从我们的私有 Docker 存储库中提取图像
- node.js - Kubernetes AWS Fargate (EKS) 不断终止 Pod 托管 React 服务
- python - Moviepy 子剪辑无限循环