2016-11-19 56 views
0

我想要向4名玩家交付13张牌,然后展示手牌。但我正在努力弄清楚如何处理这些卡片。我知道我必须使用流行和推动套牌来处理卡片,但我无法获得任何工作。任何想法都会有所帮助。我想这到目前为止,C++交易并显示一副扑克牌与矢量

void deal(vector<int> deck, int card[][cards], int players) { 
    for (int i = 0; i < players; i++) { 
     cout << "Player " << i + 1 << ": "; 
     for (int k = 0; k < cards; k++) { 
      deck.push_back(cards); 
     } 
     cout << endl; 

    } 

} 

回答

4

,而这似乎工作

void deal(vector<int> deck, int card[][cards], int players) {

你只更新您传递参数的副本。一旦您退出该功能,您的更改将丢失给主叫方。

我建议这样的:路过参考

void deal(vector<int> &deck, int card[][cards], int players) { 

,甚至这样的:

vector<int> deal(int card[][cards], int players) { 
    vector<int> deck; 
    ... 
    return deck; 

这是更优雅(因为你deck变量应该是在启动空的,所以它的一个out参数,而不是输入/输出 paraemter) 现在编译器使用return value optimization,它并不比通过引用成本高很多。我们不要试图比编译器更聪明。