将卡的矢量传递到功能打印和使用?

时间:2015-02-19 05:24:27

标签: c++ vector poker

我正在努力通过卡片程序,并希望将我的单卡片向量传递到我的功能中,以便可以使用它。现在,我只想测试它是否可以从牌组打印牌,但将其传递到牌手手中是最终目标。传递此向量以在函数中使用的最佳方法是什么?

提前致谢!!

创建套牌的功能:

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;
};

再次感谢!

1 个答案:

答案 0 :(得分:0)

这里有很多要批评的东西。你可能不想直接传递卡片列表,但可能想通过套牌,而不是像:

 void DoSomething(const Deck& deck) {
    // ...
 }

但是,假设您确实传递了列表,传递它的方式将作为const引用:

void DoSomething(const std::vector<Card>& cards) {
   // ...
}

但是,还有许多其他方面可以改进示例代码。例如,Card和Deck的数据字段应该是&#34; private&#34;并且只能通过适当的访问者功能访问。另外printCard不需要将卡作为输入,因为它在this上运行(并且,如果它确实采用了参数,则只需打印对象的函数应该通过const获取其参数,而不是一个可变的参考)。

有关示例,请参阅this gist