C++ 将卡片的向量传递到函数中以打印和使用?

C++ 将卡片的向量传递到函数中以打印和使用?,c++,vector,poker,C++,Vector,Poker,我正在努力完成一个卡片程序,希望将我的单个卡片向量传递到我的函数中,以便可以使用它。现在,我只想测试一下它是否可以打印牌组中的牌,但最终目标是将其传递到玩家手中。传递此向量以用于函数的最佳方式是什么 提前谢谢 创建甲板的函数: void Deck::createDeck() { deck.clear(); static const char suits[] = {'C','D','H','S'}; for (int suit=0; suit < 4; suit++) for (in

我正在努力完成一个卡片程序,希望将我的单个卡片向量传递到我的函数中,以便可以使用它。现在,我只想测试一下它是否可以打印牌组中的牌,但最终目标是将其传递到玩家手中。传递此向量以用于函数的最佳方式是什么

提前谢谢

创建甲板的函数:

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 Deck::createDeck(){
甲板。清除();
静态常量字符匹配[]={C','D','H','S'};
对于(int suit=0;suit<4;suit++)

对于(int val=1;val这里有很多批评。你可能不想直接通过卡片列表,但可能想通过卡片组,例如:

 void DoSomething(const Deck& deck) {
    // ...
 }
但是,假设您确实通过了该列表,则通过该列表的方式是作为常量引用:

void DoSomething(const std::vector<Card>& cards) {
   // ...
}
void DoSomething(const std::vector&cards){
// ...
}
不过,还有许多其他方面可以改进示例代码。例如,卡片和卡片组的数据字段可能应该是“私有”的,并且只能通过适当的访问器函数访问。此外,
printCard
不需要将卡片作为输入,因为它在
this
(而且,如果它确实接受了一个参数,那么一个只打印对象的函数应该接受一个常量的参数,而不是一个可变的引用)


请参阅示例。

好的,我感谢所有的建议。因此,使用第一个示例,原型是否会被放置在Deck类下,并且是
void printCard(const Deck&Deck)
那么我的函数是
void Deck::printCard(const Deck&Deck)
但我不认为现在正在传递卡片向量中的值,因为我的值和套装未在此范围内声明
?谢谢!不,它将是“void card::printCard()const”或“void printCard(const card&card)”。如果您有“card:”作为前缀,它不是静态的,但是,你已经在一张特定的卡片的上下文中,不需要将卡片作为参数。这是原型吗?我只是不知道它会在哪里,因为我有一个卡片类和一个卡片类。再次感谢。我想你可能会发现这个说明:是的,谢谢。这非常有用。这是bas这是我第一次不得不把一堆东西连接在一起,所以我遇到了很多问题,但是谢谢你发布这篇文章。
 void DoSomething(const Deck& deck) {
    // ...
 }
void DoSomething(const std::vector<Card>& cards) {
   // ...
}