将卡片的矢量传递到函数中进行打印和使用
Pass vector of card into function to print and use?
我在卡程序中很吃力,想把我的单卡向量传递到我的函数中,这样它就可以使用了。现在,我只想测试一下它是否可以从牌组中打印卡片,但将其传给玩家手中是最终目标。传递这个向量以用于函数的最佳方式是什么?
提前感谢!!
创建甲板的功能:
void Deck::createDeck() {
deck.clear();
static const char suits[] = {'C','D','H','S'};
for (int suit=0; suit < 4; suit++)
for (int val=1; val <=13; val++)
deck.push_back(Card(val,suits[suit]));
}
将卡传递到的功能:
void Card::printCard(Card& drawnCard) const { //for debugging purposes
cout << value << " of " << suit << endl;
}
原型已经在标题中声明如下:
class Card{
public:
int value;
char suit;
string drawnCard;
Card(int value, char suit) : value(value), suit(suit) {}
void printCard(Card& drawnCard) const;
};
class Deck {
public:
void createDeck();
void shuffleDeck(Card);
Card drawRandomCard();
Deck();
vector<Card> deck;
};
再次感谢!
这里有很多需要批评的地方。你可能不想直接通过卡片列表,但可能想通过牌组,比如:
void DoSomething(const Deck& deck) {
// ...
}
然而,假设您确实传递了列表,传递它的方式将是作为常量引用:
void DoSomething(const std::vector<Card>& cards) {
// ...
}
不过,还有许多其他方面可以改进示例代码。例如,Card和Deck的数据字段可能应该是"私有"的,并且只能通过适当的访问器函数进行访问。此外,printCard
不需要将Card作为输入,因为它对this
进行操作(如果它确实接受了参数,那么简单打印对象的函数应该接受常量而不是可变引用的参数)。
请参阅此要点以获取示例。
相关文章:
- 回溯C++不打印函数,因此文件
- 重写打印函数而不是覆盖基类
- 从模板创建通用打印函数,以打印基元数据类型变量的值
- 打印传递给打印函数的矢量
- 如何使用重新定义的打印函数打印Lua表?
- 调用和打印函数,在 C++ 中返回数组
- Lua C API 自定义打印函数,在字符串中传递空格时不调用
- C++二叉树打印函数实现
- 如何从主 C++ 向模板类中的方法发送打印函数
- 如果我不打印函数参数的值,则将其转换为等于零
- 打印函数模板的内容进行类指针
- C++打印函数的结果?
- 打印 C++ 函数
- 编写一个通用打印函数来打印数组
- 用于打印函数进入和退出跟踪的宏
- 每当尝试打印函数变量时,C++ cout 错误
- GDB:当没有可用的名称符号时,如何打印函数参数值
- 在lua中重新定义打印函数时出现问题
- 打印函数会返回一个意外值,原因是什么
- IntStack的C++递归打印函数