将卡片的矢量传递给功能以打印和使用?

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;

}

原型已在header中声明如下:

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 的数据字段可能应该是 "private" 并且只能通过适当的访问函数访问。此外 printCard 不需要将 Card 作为输入,因为它在 this 上运行(并且,如果它确实采用了参数,那么简单打印对象的函数应该通过 const ,不是可变引用)。

请参阅 this gist 示例。