gpt4 book ai didi

c++ - 将卡片的 vector 传递给功能以打印和使用?

转载 作者:太空宇宙 更新时间:2023-11-04 13:38:44 26 4
gpt4 key购买 nike

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

提前致谢!

创建牌组的函数:

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;

}

原型(prototype)已经在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 进行操作(并且,如果它确实采用了参数,那么简单打印对象的函数应该通过常量而不是可变引用获取其参数。

参见 this gist举个例子。

关于c++ - 将卡片的 vector 传递给功能以打印和使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28599150/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com