我正在制作二十一点游戏作为练习的一种手段。我起初使用数组,但是由于可以在堆栈中使用该练习,因此决定尝试使用堆栈创建版本。我创建了一个 flutter 克牌类(class)。class PlayingCard{ private: int value; char suit; public: PlayingCard(); PlayingCard(int val, char type) { value = val; suit = type; } int getValue() { return value; } char getSuit() { return suit; } void setValue(int val) { value = val; } void setSuit(char type) { suit = type; }};然后,我创建了该类的堆栈。stack<PlayingCard> deck1;现在,例如,我将以下内容压入堆栈:deck1.push(PlayingCard('C', 9));首先,以我的理解,我是否正确,那就是将“PlayingCard”对象以“C”(俱乐部)的套装和值9推入堆栈?我现在遇到的问题是,当玩家从堆叠中“抽出一张牌”时,就打印出西服值和值。我不能只做“cout 我尝试使此函数打印出值:void prints(PlayingCard tester){ cout << tester.getSuit() << " " << tester.getValue() << "\n";}调用看起来像这样:prints(deck1.top());但是,这不能给我正确的输出。有什么建议吗?如果我应该只使用 vector 或数组,那么我想我可以做到,但是我认为最好使用堆栈,因为堆栈可以更好地模拟实际纸牌如何在顶部弹出和抽出纸牌的工作方式甲板 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 您可以通过在类PlayingCard中添加方法“show()”来考虑使用更多的C++ / OOP方法,如下所示:class PlayingCard{ private: int value; char suit;public://...std::string show(){ std::stringstream ss; ss << " " << value << " " << suit << std::endl; return (ss.str());}// ...};然后,在您的代码中,声明一个牌组之后,在其中放一些卡片...// ...deck1.push(PlayingCard('C', 9));// more cards ...// to show the entire deck, you would want to be able to do something// like:for (size_t i=0; i<deck1.size(); ++i) // for each card std::cout << deck[i].show() << std::endl; // invoke show()编辑:哎呀。好吧,不,堆栈不是 vector 。但是想法是一样的……旋转卡片组中的每个条目,然后调用show方法。由于尚未完成设计,因此您将必须决定如何完成对每个堆叠项目的访问。关于c++ - 从堆栈中打印出一个类对象变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30904499/ (adsbygoogle = window.adsbygoogle || []).push({}); 10-09 03:57