我正在努力通过卡片程序,并希望将我的单卡片向量传递到我的功能中,以便可以使用它。现在,我只想测试它是否可以从牌组打印牌,但将其传递到牌手手中是最终目标。传递此向量以在函数中使用的最佳方法是什么?
提前致谢!!
创建套牌的功能:
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;
};
再次感谢!
答案 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。